2 Stimmen

Wie kann ich die Menge des verbleibenden Speichers durch den Aufruf von System.gc() abschätzen?

Ich habe einen Datenverarbeitungscode, der das folgende Rezept verwendet:

  • Lesen Sie so viele Daten ein, wie in den Speicher passen (nennen Sie dies einen "Chunk")
  • Verarbeitung des Chunks durchführen
  • Verarbeitete Chunks auf die Festplatte schreiben
  • Wiederholen Sie
  • ...
  • Führen Sie alle verarbeiteten Chunks zusammen, um die endgültige Antwort zu erhalten.

Diese letzte Phase ist am effizientesten, wenn es so wenig Chunks wie möglich gibt, daher möchte ich, dass die erste Phase so viele Daten einliest, wie in den Speicher passen. Dies kann ich durch die Abfrage [Runtime.freeMemory()](http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#freeMemory()) .

Dies bedeutet jedoch, dass ich Folgendes aufrufen muss [System.gc()](http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#gc()) oder die Zahl, die von Runtime.freeMemory() ist viel kleiner als die Menge an Speicher, die ich sicher zuweisen könnte.

Ich habe eine Reihe von Behörden sagen hören, dass das Anrufen System.gc() ist ausdrücklich eine schlechte Idee. Gibt es eine Möglichkeit, dies zu vermeiden?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X