Es gibt viel zu sagen, wenn man sich die Zeit nimmt, um die verschiedenen Einstellungen für die Speicherbereinigung zu testen, aber wie oben erwähnt, ist dies normalerweise nicht sinnvoll.
Ich arbeite derzeit an einem Projekt mit einer speicherbeschränkten Umgebung und relativ großen Datenmengen. Es gibt einige große Datenmengen, die meine Umgebung an ihre Grenzen bringen, und obwohl ich die Speichernutzung so reduzieren konnte dass es theoretisch gut funktionieren sollte, ich würde immer noch Heap-Space-Fehler bekommen - die ausführlichen GC-Optionen zeigten mir, dass es versuchte, Müll zu sammeln, aber ohne Erfolg. Im Debugger konnte ich System.gc () ausführen und sicher war "viel" Speicher verfügbar ... nicht viel Extra, aber genug.
Folglich ruft meine Anwendung System.gc () nur dann auf, wenn sie in das Codesegment eingibt, in dem große Puffer zugewiesen werden, die für die Verarbeitung der Daten erforderlich sind, und ein Test des verfügbaren freien Speichers zeigt an, dass dies nicht der Fall ist garantiert, um es zu haben. Insbesondere betrachte ich eine 1-GB-Umgebung, in der mindestens 300 MB mit statischen Daten belegt sind, wobei der Großteil der nicht statischen Daten ausführungsbezogen ist, es sei denn, die verarbeiteten Daten sind mindestens 100 bis 200 MB groß die Quelle. Dies alles ist Teil eines automatischen Datenkonvertierungsprozesses, sodass die Daten auf lange Sicht nur für relativ kurze Zeiträume vorhanden sind.
Obwohl Informationen über die verschiedenen Optionen zum Optimieren des Garbage Collectors verfügbar sind, scheint dies leider weitgehend ein experimenteller Prozess zu sein, und die Einzelheiten der unteren Ebene, die zum Verständnis des Umgangs mit diesen spezifischen Situationen erforderlich sind, sind nicht leicht zu erhalten.
Obwohl ich System.gc () verwende, habe ich trotzdem die Verwendung von Befehlszeilenparametern fortgesetzt und es geschafft, die Gesamtverarbeitungszeit meiner Anwendung um einen relativ erheblichen Betrag zu verbessern, obwohl ich nicht in der Lage war, darüber hinwegzukommen Stolperstein durch die Arbeit mit den größeren Datenblöcken. Davon abgesehen ist System.gc () ein Tool ... ein sehr unzuverlässiges Tool, und wenn Sie nicht vorsichtig sind, wie Sie es verwenden, werden Sie sich wünschen, dass es nicht öfter funktioniert als nicht.