标签:定位 收集器 bool 开启 rand print 直接 cell 版本控制
Java中的GC有哪几种类型?
参数 |
描述 |
UseSerialGC |
虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集。 |
UseParNewGC |
打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集。 |
UseConcMarkSweepGC |
打开此开关参数后,使用ParNew+CMS+Serial Old收集器组合进行垃圾收集。Serial Old作为CMS收集器出现Concurrent Mode Failure的备用垃圾收集器。 |
UseParallelGC |
虚拟机运行在Server模式的默认值,打开此开关参数后,使用Parallel Scavenge+Serial Old收集器组合进行垃圾收集。 |
UseParallelOldGC |
打开此开关参数后,使用Parallel Scavenge+Parallel Old收集器组合进行垃圾收集。 |
在Java程序启动完成后,通过jps观察进程来查询到当前运行的java进程,使用
的方式可以定位其使用的gc策略,因为这些参数都是boolean型的常量,如果使用该种gc策略会出现+号,否则-号。
使用-XX:+上述GC策略可以开启对应的GC策略。
可以通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文件等策略。
GC的日志是以替换的方式(>)写入的,而不是追加(>>),如果下次写入到同一个文件中的话,以前的GC内容会被清空。
对应的参数列表
这里使用如下的参数来进行日志的打印:
对于新生代回收的一行日志,其基本内容如下:
其含义大概如下:
老年代回收的日志如下:
gc日志中的最后貌似是系统运行完成前的快照:
可以使用一些离线的工具来对GC日志进行分析,比如sun的gchisto(https://java.net/projects/gchisto),gcviewer(https://github.com/chewiebug/GCViewer ),这些都是开源的工具,用户可以直接通过版本控制工具下载其源码,进行离线分析
标签:定位 收集器 bool 开启 rand print 直接 cell 版本控制
原文地址:https://www.cnblogs.com/tiancai/p/9283405.html