感谢iteye,试读活动又开始了!
《Java性能优化权威指南》从目录结构来看,本书覆盖了从操作系统、JVM到JAVA应用各个层面的性能监控、性能分析、性能调优,包括jvm基本原理、基本性能调优方式、调优技巧、性能监控工具、一些高效的基准测试等。总体来讲非常全面,java性能优化方面不可多得的好书,推荐大家认真阅读。对我来说,收获颇丰,赞!!
在阅读第4章前,特意补充点知识,第1章 策略、方法和方法论。2、JVM基础知识。
在生产环境下,我们通过JVM监控,定位到出现性能问题的根本原因,才能针对JVM进行调优。主要过程:JVM性能监控--> 性能分析-->性能调优
Chapter4 JVM性能监控
主要内容 基本的GC数据模型日志如何分析,如何使用工具进行监控等
不再累赘了,详细看看书吧。
GC日志解析:
启动JVM时,加入相关参数:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps
[GC [PSYoungGen: 47265K->2888K(152896K)] 47265K->2888K(502464K), 0.0219235 secs] [Times: user=0.03 sys=0.00, real=0.03 secs] ① [Full GC (System) [PSYoungGen: 2888K->0K(152896K)] [PSOldGen: 0K->2848K(349568K)] 2888K->2848K(502464K) [PSPermGen: 9756K->9756K(65536K)], 0.0486615 secs] [Times: user=0.06 sys=0.00, real=0.06 secs] ② [GC [PSYoungGen: 131072K->9330K(152896K)] 133920K->12178K(502464K), 0.0312386 secs] [Times: user=0.05 sys=0.02, real=0.03 secs] [GC [PSYoungGen: 140402K->21011K(152896K)] 143250K->23859K(502464K), 0.1426033 secs] [Times: user=0.23 sys=0.01, real=0.14 secs] [GC [PSYoungGen: 152083K->21817K(240320K)] 154931K->34582K(589888K), 0.1067384 secs] [Times: user=0.14 sys=0.03, real=0.11 secs] [GC [PSYoungGen: 240313K->21820K(240320K)] 253078K->46106K(589888K), 0.1309331 secs] [Times: user=0.17 sys=0.06, real=0.13 secs]
解析①
GC:minor GC,回收新生代区域
PSYoungGen:PS表示垃圾收集器类型(并行回收);youngGen :新生代
[GC [PSYoungGen: 47265K->2888K(152896K)] : 新生代数据从GC前47265K到GC后2888K,新生代区域大小为152896K
47265K->2888K(502464K), 0.0219235 secs]:java堆(新生代和老年代)占用从GC前47265K到GC后2888K,java堆(新生代和老年代)大小为502464K,用时0.0219235 secs
[Times: user=0.03 sys=0.00, real=0.03 secs] :表示CPU使用时间,user:垃圾回收cpu占用时间,sys:垃圾回收器调用执行操作系统调用消耗的cpu时间。real:GC实际时间
解析②
Full GC (System):表示system.gc()调用产生的full GC
[PSYoungGen: 2888K->0K(152896K)] :同Minor GC部分;Full GC直接把新生代区域数据copy到老年代
[PSOldGen: 0K->2848K(349568K)] :老年代数据从0增加到2848K,old Geneerator大小349568K
2888K->2848K(502464K) : java堆(新生代和老年代)总体大小变化
[PSPermGen: 9756K->9756K(65536K)], 0.0486615 secs]:永久代大小65536K,数据从Full GC一直保持9756K
纠错:P80 Line8
在这个例子中,垃圾收集器使用0.06秒用户态CPU时间。
不同GC类型,有所不同;
如serial GC: [GC [DefNew: 47265K->2888K(152896K)]
JVM监控工具
离线分析工具:GCLogViewer
通过JVM 参数生成生产环境下日志文件:-Xloggc <filename>
以图形的形式还原部分监控情况,如图:
其他如:gchisto
在线图形监控:
①VisualVM
反应实时JVM各个参数:线程、Heap等情况
② Jconsole
思考:何时需要进行Full GC呢?
本章讲了基本的GC数据模型日志如何分析,如何使用工具进行监控等。还是要自己多多实践方可。其他章节应该有更详细介绍,到时候买本看看^_^!!