2013-12-23 16 views
6

Die JVM-Optionen: fast 20 MB Speicher für die JVM-HeapWarum ist der JVM-Gesamtspeicher größer als -Xmx?

-Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8

Wie erwartet, wird die JVM zuordnen.

Aber finden Sie im folgenden GC Detail:

PSYoungGen insgesamt 9216K, verwendet 4612K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)
eden Raum 8192K, 56% verwendet [0x00000000ff600000,0x00000000ffa812d8,0x00000000ffe00000)
vom Raum 1024K, 0% [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)
verwendet s Schritt 1024K, 0% [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000)
PSOldGen Gesamt 10240K, verwendet 8192K [0x00000000fec00000, 0x00000000ff600000, 0x00000000ff600000)
Objektraum 10240K, 80% verwendet [0x00000000fec00000,0x00000000ff400020,0x00000000ff600000) PSPermGen verwendet Gesamt 21248K, verwendet 3033K [0x00000000f9a00000, 0x00000000faec0000, 0x00000000fec00000)
Objektraum 21248K, verwendet 14% [0x00000000f9a00000,0x00000000f9cf6708,0x00000000faec0000)

die Größe der junge Generation ist wie erwartet für die Option -Xmn. Das Verhältnis von Größe für eden Raum und Survivor Spaces in der jungen Generation wie für die Option -XX:SurvivorRatio=8 erwarten ist. Aber scheint es insgesamt die JVM fast 40MB Speicher zugeordnet, so ist es seltsam. Warum ist der JVM-Gesamtspeicher größer als -Xmx?

Env:

OS: win7 64 bit

JDK: build 1.6.0_43-b01 64bit

Antwort

11

-Xmx die maximale Größe des HotSpot Object-Heap stellt, ist, dass die Summe von YoungGen (Eden + Survivor-Räume) und OldGen und das sind ca. 20 MB. Die permanente Generierung befindet sich außerhalb dieses Heaps in einem separaten Speicherbereich, der über die Option -XX:MaxPermSize gesteuert wird.

+0

bedeutet also, dass der Haufen in zwei Generationen unterteilt ist: YoungGen und OldGen, enthält nicht das PermGen? –

+0

@LipingHuang Ja, das ist richtig. Der Haufen ist unterteilt in die * junge Generation *, 'PSYoungGen' und die * alte Generation *, 'PSOldGen'. Der Heap enthält nicht die * permanente Generation *, 'PSPermGen'. "PS" steht übrigens für * parallel scavenge collector * (aktiviert mit '-XX: UseParallelGC'). – DontDivideByZero

+0

@LipingHuang Die * junge Generation * ist weiter unterteilt in * eden space * und zwei * survivor spaces *, bekannt als * from space * und * to space *.Allerdings ** trägt nur einer der * Überlebendenräume * zur angegebenen Größe der * jungen Generation *** bei, wie hier [http://stackoverflow.com/q/28347161/3460717] diskutiert. – DontDivideByZero

Verwandte Themen