JVM通过新生代与老年代的GC搭配使用,HotSpot JVM1.6的GC关系图如下:


具体每种GC的介绍这里不再赘述。

JVM可以设置GC参数来搭载不同的GC:

在Client模式下的默认值为UseParNewGC,它采用ParNew + Serial Old的GC组合。

在Server模式下的默认值是UseParallelGC,它采用Parallel Scavenge + Serial Old的GC组合。

JVM可以通过以下参数记录GC日志:

-XX:+PrintGCDetails             记录GC日志,并且在进程退出时输出当前内存各区域的分配情况。

-XX:+PrintGCDateStamps   打印出垃圾回收发生的时间是距离HotSpot VM启动时间的秒数

-Xloggc:<file>                         将虚拟机每次垃圾回收的信息写到日志文件中,文件名由file指定,文件格式是平文件,内容和-verbose:gc输出内容相同。

在eclipse里指定JVM参数:右键选择待运行的java程序,选择Run As -> Run Configurations, 在Arguments里的VM arguments里填写jvm参数。


Minor GC vs Full GC

Minor GC (新生代GC), 非常频繁,回收速度较快。

Major GC/Full GC (一般情况下是老年代GC,其他情况比如Perm Gen满,System.gc()等),不频繁,速度较慢。








Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐