GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配模式。
- 生产中配置ct任务的gc日志实例
${JAVA_HOME}/bin/java -Dlog4j.logtype=$ERROR_FILENAME -Xms2048m -Xmx2048m -XX:MaxPermSize=512M -XX:+PrintGC -verbose:gc -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -classpath $CLASSPATH com.baidu.fengchao.sirius.scripts.deletefile.DeleteFileScripts wordcleanup >> ${log_file} 2>&1
- gc日志实例
[GC (System.gc()) [PSYoungGen: 26982K->1194K(75776K)] 26982K->1202K(249344K), 0.0010103 secs]
- gc日志具体参数详解
GC日志说明:
GC打印时间: [垃圾回收类型回收时间: [收集器名称: 年轻代回收前占用大小->年轻代回收后占用大小(年轻代当前容量), 年轻代局部GC时JVM暂停处理的时间] 堆空间GC前占用的空间->堆空间GC后占用的空间(堆空间当前容量) ,GC过程中JVM暂停处理的时间]。
- 垃圾回收类型: 分为GC和Full GC.
GC一般为堆空间某个区发生了垃圾回收,
Full GC基本都是整个堆空间及持久代发生了垃圾回收,通常优化的目标之一是尽量减少GC和Full GC的频率。
- 在java程序中是否需要主动执行System.gc()
参考1 告诉大家其实不需要,并且即使执行了也只是告诉jvm该执行gc了。具体jvm什么时候执行gc其实并不清楚。
参考
1 JVM:gc什么时候开始?System.gc()能保证gc一定发生吗?
2 eclipse启动gc日志打印
3 jvm的gc日志full Gc每个字段彻底详解
网友评论