Genauen Zustand der zugesicherte Speicher in java
Ich bin neugierig, was die genaue Bedeutung von "engagierten" Speicher ist, wenn der Wert abgefragt wird, aus der Klasse MemoryUsage. Klasse erklärt es als "engagiert repräsentiert die Menge Speicher (in Byte), die garantiert werden, verfügbar für die Verwendung der Java virtual machine." Bedeutet das, dass der Speicher der jvm-Prozess und NICHT an andere Prozesse, bis es freigegeben wird, die von der java-Prozess, oder bedeutet es, dass der java-Prozess wird erfolgreich sein, wenn er versucht zu reservieren, bis zur Höhe des Betrages Speicher? Ich weiß, dies könnte die Umsetzung spezifisch, aber ich bin nur daran interessiert, hotspot.
InformationsquelleAutor Spencer Stejskal | 2008-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verpflichtet, die Größe ist den eigentlich zugewiesenen Arbeitsspeichers die verwendete Größe ist die Größe, verwendet für die Speicherung der eigentlichen Daten (~= committed-es ist Zeit für große GC und möglicherweise wächst der heap). Die Max Größe ist hart an der Grenze, auf die der Haufen wachsen kann - wenn es nicht genug, den die JVM wirft OutOfMemoryError.
Wenn ein Speicher zugesichert wird, dann ist es definitiv verwendet werden kann. Außerdem ist die einzige Gelegenheit, bei der JVM wäre nicht in der Lage zu verpflichten, mehr Speicher (auf einem modernen OS) ist, wenn die hardware out of virtual memory.
Alle diese Größen nur sagen, die Größe des heap-region. Die JVM hat andere Speicherbereiche als auch (thread-stacks, JIT-cache, etc.) Die heap-region ist in der Regel größten, dies entspricht in etwa dem Prozess-Bilanz.
Zwei Hinweise:
"Die commit-Größe ist den eigentlich zugewiesenen Arbeitsspeichers die verwendete Größe ist die Größe, verwendet für die Speicherung der eigentlichen Daten (~= committed-es ist Zeit für große GC und möglicherweise wächst der heap). Die Max Größe ist hart an der Grenze, auf die der Haufen wachsen kann - wenn es nicht genug, den die JVM wirft OutOfMemoryError." für mich bedeutet das, dass irgendwann (es depens auf max-Wert der heap-Xmx) erhalten Sie OutOfMemoryError?
InformationsquelleAutor
"Bedeutet dies, dass der Speicher der jvm-Prozess und NICHT auf andere Prozesse" wäre die richtige. So ist es unter (oder gleich) der Arbeitsspeicher, das Betriebssystem sieht, wie ergriffen von der JVM-Prozess.
http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html (sorry, keine Anker, link).
InformationsquelleAutor Michael Neale