《Java性能优化权威指南》试读后感

在大中型系统开发中,随着用户量、数据量、并发量等的不断增大之后,性能优化问题往往会上升为所有矛盾中的主要矛盾,成为最令我们头疼的不敢触碰的老大难问题,往往会让我们感到不知所措,不知道如何下手,感觉那就是一个一直听闻却不曾正面对抗的令人惧怕的“伏地魔”。

 

不过这本《Java性能优化权威指南》给我们指出了明路,它能够教会我们哈利波特的黑魔法,让我们能够面对种种性能优化的“伏地魔”而胸有成竹、毫无惧色,并能够最终战胜它们。

 

与一本只讲原理的书不同,本书重在实践,重要如何监控性能、如何发现性能隐患、如何判断什么地方需要性能优化以及如何进行性能优化。

 

本书涉及Java性能优化的各个方面,人称Java性能优化的“圣经”。可惜本次的试读章节只有其中的第4章——JVM性能监控。但是虽然只有一章,却已经能够让人窥得一斑,短短一个章节已经教会了我们JVM性能监控的技巧,同时从字里行间可以看出前面的章节对JVM原理的讲解也非常深入、到位,而且也已经提前透漏出一些何时需要性能优化的判断依据,当然,详细的还在后面的章节,举例来说:

 

1、通过jconsole等工具,可以看出一定时间内Minor GCFull GC的次数,从而对Full GC的频度有一个感性的认识,再结合Full GC的停顿时间,可以判断应用程序对Full GC频度和持续时间的需求,从而可以判断是否需要调优。

2、通过jconsole等工具,可以看到垃圾收集的开销(Overhead%,这正代表了垃圾收集调优的程度,如果开销比较大,比如大于10%,那么就说明需要调优了。

3、Java堆的新生代一般分为一个Eden和两个Survivor,而如果发现Survivor在较长的时间内是满的,就说明Survivor已经溢出,对象在老化之前就已经被提升到了老年代,这无疑将造成老年代空间的浪费,此时就需要对新生代进行调优了。

 

在看这本书之前,我们可能都做过一个调优——当发生异常“java.lang.outOfMemoryError:PermGen Space”的时候通过-XX:PermSize-XX:MaxPermSize选项来调整永久代的大小,当那都是亡羊补牢。第4章中告诉了我们调整永久代依据和原因——“当需要加载其他类而空间不足时,未使用的类就会从永久代中被卸载。从永久代卸载类,意味着需要Full GC,而程序可能会因此遭遇性能问题。Full GC过程中的类卸载,说明永久代需要扩大,或者它的初始大小需要扩大”。

 

这本书,不仅告诉我们需要监控应用程序的运行、发现性能隐患,如何判断需要进行性能优化,并告诉我们如何进行性能调优。

另外,作者还让我们明白为什么要进行这样的性能优化。而这样,就使我们对JVM和其他的内部原理加深了理解,这种理解更令人印象深刻。

 

看完这一章,使我迫不及待想看到前面讲JVM原理特别是垃圾收集的部分,那一定比专门将原理的书更让人容易真正理解和印象深刻,同时也更加期待后续专门讲解性能优化的判断准则和优化方法的内容。

你可能感兴趣的:(有奖试读)