Frage

Im gespannt, was die genaue Bedeutung von „committed“ Speicher ist, wenn der Wert aus der Klasse Memoryusage abgefragt wird. Diese Klasse erklärt es als „committed die Menge an Speicher (in Bytes) darstellt, die für die Verwendung zur Verfügung stehen durch die virtuelle Java-Maschine gewährleistet ist.“ Bedeutet dies, dass der Speicher in Verwendung durch den JVM-Prozess ist und für andere Prozesse nicht verfügbar, bis es durch den Java-Prozess freigegeben wird, oder bedeutet es, dass der Java-Prozess erfolgreich sein wird, wenn es versucht, auf die Menge an Speicher zuweisen up ? Ich weiß, diese Implementierung spezifisch sein könnte, aber ich bin nur daran interessiert Hotspot.

War es hilfreich?

Lösung

Die engagierte Größe ist die tatsächlich zugewiesenen Speicher, die verwendete Größe die Größe für die Speicherung von Ist-Daten verwendet wird (wenn verwendet ~ = engagiert es an der Zeit für die wichtigsten GC ist und möglicherweise das Wachstum des Heap). Die Max-Größe ist die harte Grenze, auf die die Haufen wachsen kann -. Wenn es nicht genug, die JVM wirft OutOfMemoryError

Wenn ein Speicher begangen wird dann auf jeden Fall kann es verwendet werden. Auch die einzige Gelegenheit, bei der JVM nicht in der Lage sein, mehr einprägen (auf einem modernes O) ist, wenn die Hardware aus virtuellem Speicher ist.

Alle diese Größen sagen Sie nur die Größe des Haufens Region. Die JVM hat andere Speicherbereiche als auch (Fadenstapel, JIT-Cache, etc.) Die Heap-Region ist in der Regel am größten, das entspricht in etwa den Prozess Stellfläche.

Zwei Anmerkungen:

  • , wenn die engagierte Größe im physikalischen Speicher nicht paßt, Teile davon wird in die Auslagerungsdatei ausgetauscht werden. Dies führt zu großer Verlangsamung bei GC und in solchen Fällen werden Sie die App-Leistung durch Reduzierung der Speichergröße verbessern.
  • Einige Betriebssysteme erlauben doppelte Buchung von Speicher - können Sie so viel wie Sie wollen so lange zuteilen, wie Sie nicht versuchen, es zu benutzen (vergessen, welches Betriebssystem es war - jemand füllen mich in)

Andere Tipps

„Bedeutet dies, dass die verwendeten Speicher durch das JVM-Prozess und zur Verfügung nicht auf andere Prozesse“ wäre die richtige sein. So ist es weniger als (oder gleich) die Größe des Speichers des O wie von dem JVM-Prozess genommen sieht.

http://java.sun.com /j2se/1.5.0/docs/guide/management/jconsole.html (sorry keine Anker verlinkt werden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top