Java 7 (JDK 7) 垃圾回收和 G1 上的文档
2022-08-31 12:22:51
Java 7已经问世一段时间了,但是我找不到任何关于垃圾回收器配置的好资源,特别是新的G1收集器。
我的问题:
- G1 是 Java 7 中的缺省收集器吗?如果不是,我该如何激活 G1?
- g1 在 Java7 中有哪些可选设置?
- 是否对其他收集器(如 cms 或 Java 7 中的并行收集器)进行了任何更改?
- 在哪里可以找到有关 Java 7 中垃圾回收的优秀文档?
Java 7已经问世一段时间了,但是我找不到任何关于垃圾回收器配置的好资源,特别是新的G1收集器。
我的问题:
G1 垃圾回收器不是我安装的 Java 版本 1.7.0_01 中的默认设置。您可以通过使用一些额外的命令行选项来亲眼看到:
> java -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -version
-XX:InitialHeapSize=132304640 -XX:MaxHeapSize=2116874240 -XX:ParallelGCThreads=4 -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.7.0_01"
Java(TM) SE Runtime Environment (build 1.7.0_01-b08)
Java HotSpot(TM) 64-Bit Server VM (build 21.1-b02, mixed mode)
Heap
PSYoungGen total 37696K, used 1293K [0x00000007d5eb0000, 0x00000007d88c0000, 0x0000000800000000)
eden space 32320K, 4% used [0x00000007d5eb0000,0x00000007d5ff3408,0x00000007d7e40000)
from space 5376K, 0% used [0x00000007d8380000,0x00000007d8380000,0x00000007d88c0000)
to space 5376K, 0% used [0x00000007d7e40000,0x00000007d7e40000,0x00000007d8380000)
PSOldGen total 86144K, used 0K [0x0000000781c00000, 0x0000000787020000, 0x00000007d5eb0000)
object space 86144K, 0% used [0x0000000781c00000,0x0000000781c00000,0x0000000787020000)
PSPermGen total 21248K, used 2032K [0x000000077ca00000, 0x000000077dec0000, 0x0000000781c00000)
object space 21248K, 9% used [0x000000077ca00000,0x000000077cbfc288,0x000000077dec0000)
但是,您无需启用实验性选项即可再次打开 G1 收集器:
> java -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseG1GC -version
-XX:InitialHeapSize=132304640 -XX:MaxHeapSize=2116874240 -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation
java version "1.7.0_01"
Java(TM) SE Runtime Environment (build 1.7.0_01-b08)
Java HotSpot(TM) 64-Bit Server VM (build 21.1-b02, mixed mode)
Heap
garbage-first heap total 130048K, used 0K [0x000000077ca00000, 0x0000000784900000, 0x00000007fae00000)
region size 1024K, 1 young (1024K), 0 survivors (0K)
compacting perm gen total 20480K, used 2032K [0x00000007fae00000, 0x00000007fc200000, 0x0000000800000000)
the space 20480K, 9% used [0x00000007fae00000, 0x00000007faffc288, 0x00000007faffc400, 0x00000007fc200000)
No shared spaces configured.
我不知道在哪里可以找到任何好的文档。
甲骨文终于在Java 7 U4中正式成为G1:http://www.oracle.com/technetwork/java/javase/7u4-relnotes-1575007.html
描述: http://docs.oracle.com/javase/7/docs/technotes/guides/vm/G1.html
命令行选项:http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#G1Options
不过,我不认为它是Java 7中的默认收集器。对于服务器,缺省值是并行收集器,如 Java 6 中所示。