`

《Java性能优化权威指南》 试读笔记

 
阅读更多

    感谢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数据模型日志如何分析,如何使用工具进行监控等。还是要自己多多实践方可。其他章节应该有更详细介绍,到时候买本看看^_^!!
 

  • 大小: 59.1 KB
  • 大小: 58 KB
  • 大小: 64 KB
  • 大小: 89.3 KB
  • 大小: 69.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics