《Java性能优化权威指南》 试读经验

《Java性能优化权威指南》 试读心得

实用,是我读了《Java性能优化权威指南》这本书试读部分之后的最大的心得。

最近系统更新了一个新版本,出乎意料的是,系统响应相当慢,比上线前慢了有将近10倍。结果不仅遭到客户的投诉,项目经理也对我们严厉斥责。到网上到处搜索也没有找到合适的解决办法。连续好几天吃不下睡不着。

无意中看到ITeye举办的技术图书试读活动,打开《Java性能优化权威指南》看了看,突然眼前一亮,这不就是我一直在寻找的吗?

经过对“4.2 垃圾收集”的仔细阅读,我更加深入地了解了GC,知道了如何去看GC日志,了解了其中内容代表的含义。不在像以前那样一看到GC日志文件就如见到天书一般。知道了如何使用工具来分析离线GC日志或者监控系统的GC情况。

首先,我从生产环境获取到GC日志文件;

其次,使用GCHisto工具来分析获取到的GC日志文件,得知Full GC时间占用整个GC时间的10%以上。根据书中的描述,这种情况是不正常的。所以,我们初步估计问题就出在系统中存在的大量的Full GC

最后,为了能更清楚地定位出问题的所在,我们使用visualVM工具监控开发环境的GC情况。根据书本描述的步骤,配置了visualVM工具,打开并进入visualGC视图。在visualGC视图中,我们发现系统在进行Full GC时,堆空间的占用量并不大(包括年轻代和年老代),看来并不是因为堆空间占用过大才导致Full GC的,经过更加细致的观察后,我们发现系统进行了50多次的Full GC,而且每次Full GC都是因显式调用System.GC()引起的。有了这个结论,我们很容易的就定位到了出现问题的代码。原来是因为在一个while循环里显式调用了System.gc()。删除System.gc()后,系统就不再出现响应慢的问题了。

        这次系统出现的问题得以解决,可以说很大一部分原因得归功于《Java性能优化权威指南》这本书。

 

总之,《Java性能优化权威指南》是一本相当实用的Java性能相关的书籍,值得每一位Java从业者人手一本。