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

《Java性能优化权威指南》读书笔记_第1张图片


《Java性能优化权威指南》读书笔记_第2张图片


《Java性能优化权威指南》读书笔记_第3张图片


《Java性能优化权威指南》读书笔记_第4张图片

除了上面4个思维导图以外,再摘录如下片段:


2.3CPU调度程序运行队列


       如果在很长一段时间里,运行队列的长度一直都超过虚拟处理器个数的1倍,就需要关注了,只是暂时还不需要立刻采取行动。如果在很长一段时间见里,运行队列的长度达到虚拟处理器个数的3~4倍或更高,则需要立刻引起注意或采取行动。

       解决运行队列长有两种方法。一种是增加CPU以分担负载或减少处理的负载量。另一种方法是分析系统中运行的应用,改进CPU使用率。换句话说,研究可以减少应用运行所需CPU周期的方法,如减少垃圾收集的频率或采用完全同意任务但CPU指令更少的算法。


2.5.4应用性能改进的考虑


       单次读写数据量小而网络读写量大的应用会消耗大量的系统态CPU,产生大量的系统调用。对于这类应用,减少系统态CPU的策略是减少网络读写的系统调用。此外,使用非阻塞的Java NIO而不是阻塞的java.net.Socket,减少处理请求和发送相应的线程数,也可以改善应用性能。

       从非阻塞Socket中读取数据的策略是,应用在每次读请求时尽可能多地读取数据。同样,当往Socket中写数据时,每个写调用应该尽可能多地写。


2.6磁盘I/O使用率


       如果应用的磁盘I/O使用率高,就值得深入分析系统磁盘I/O子系统的性能,进一步查看它预期的负载量、磁盘服务时间、寻道时间以及服务I/O事件的时间。如果需要改善磁盘使用率,可以使用一些策略。从硬件和操作系统上看,下面是一些改进磁盘I/O使用率的策略:

  • 更快的存储设备。

  • 文件系统扩展到多个磁盘。

  • 操作系统调优使得可以缓存大量的文件系统数据结构。

       关于磁盘性能,有一个经常被忽视的方法,就是检查磁盘缓存是否开启。有一些系统将磁盘缓存设置为禁用。开启磁盘缓存可以改善严重依赖磁盘I/O的应用的性能。然而,如果发现系统默认设置为禁用磁盘缓存,你应该加以注意,因为一旦开启磁盘缓存,意外电源故障可能会造成数据损坏。


3.2.7异常处理


       当与Java的语义约束冲突时,Java虚拟机会用异常通知程序。例如,试图获取数组范围之外的元素就会引发异常。异常导致程序控制的非局部转移,从异常发生或直接抛出的地方,转到程序员指定或异常被捕获的地方。异常处理由HotSpot VM解释器、JIT编译器和其它HotSpot VM组件一起协作实现。异常处理主要有两种情形,同一方法中抛出和捕获异常,或由调用方法捕获异常。后一种情况更为复杂,需要退栈才能找到合适的异常处理器。异常可以由抛出字节码、VM内部调用返回、JNI调用返回或Java调用返回所引发。最后一种情况只有在前3种之后才会发生。当VM遇到抛出的异常时,就会调用HotSpot VM运行时系统查找该异常最近的处理器。有3类信息可用于查找异常处理器:当前方法、当前字节码和异常对象。如前所述,如果在当前方法中没有找到异常处理器,当前的活动栈帧就会退栈,重复这个过程直至找到异常处理器。一旦发现适当的异常处理器,HotSpot VM的执行状态就会更新,并跳转到该异常处理器继续执行Java代码。

你可能感兴趣的:(读书笔记)