2013-03-14 70 views
4

我試圖搜索這個問題的答案,但從來沒有設法找到任何答案。Java堆的標準分配比例

當我定義最大堆大小時,爲Java GC空間分配大小的標準比率是多少?

也就是說:如果我啓動我的JVM,比如4Gb的堆,分配給Eden多少錢?倖存者多少錢?終身多少?

另外,不同VM供應商的比例是否會發生變化?

在此先感謝

回答

3

這是JVM特定的。 Oracle的JVM中,您可以通過使用-XX:+PrintCommandLineFlags -XX:+PrintGCDetails找出堆大小:

$ java -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -version 
-XX:InitialHeapSize=78820288 -XX:MaxHeapSize=1261124608 -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseCompressedOops -XX:+UseParallelGC 
java version "1.7.0_09" 
Java(TM) SE Runtime Environment (build 1.7.0_09-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) 
Heap 
PSYoungGen  total 22464K, used 770K [0x000000013e820000, 0x0000000140130000, 0x0000000157970000) 
    eden space 19264K, 4% used [0x000000013e820000,0x000000013e8e0b08,0x000000013faf0000) 
    from space 3200K, 0% used [0x000000013fe10000,0x000000013fe10000,0x0000000140130000) 
    to space 3200K, 0% used [0x000000013faf0000,0x000000013faf0000,0x000000013fe10000) 
ParOldGen  total 51328K, used 0K [0x000000010c570000, 0x000000010f790000, 0x000000013e820000) 
    object space 51328K, 0% used [0x000000010c570000,0x000000010c570000,0x000000010f790000) 
PSPermGen  total 21248K, used 2165K [0x0000000107370000, 0x0000000108830000, 0x000000010c570000) 
    object space 21248K, 10% used [0x0000000107370000,0x000000010758d6a8,0x0000000108830000) 

這個,你可以很容易地制定出比。