打造高性能java应用你需要知道的-java开发java经验技巧

打造高性能java应用你需要知道的-java开发java经验技巧

ID:31044773

大小:68.50 KB

页数:4页

时间:2019-01-05

打造高性能java应用你需要知道的-java开发java经验技巧_第1页
打造高性能java应用你需要知道的-java开发java经验技巧_第2页
打造高性能java应用你需要知道的-java开发java经验技巧_第3页
打造高性能java应用你需要知道的-java开发java经验技巧_第4页
资源描述:

《打造高性能java应用你需要知道的-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、打造高性能JAVA应用你盂要知道的-编程开发技术打造高性能JAVA应用你需要知道的原文出处:陆晨这篇文章节选自Cjavaperformance》,对java性能比较关心的同学大概都知道这本书,性能这个东西可能是很多同学在口常写javacode的时候很少去关心的,但是在我们写code的过程中确又时时离不开对程序性能的影响,小到我们使用位运算来实现算术运算,大到我们对JAVA代码的总体架构设计,性能其实离我们很近。本片文章主要提到几个点,主要是在性能领域我们比较关注的一些问题,并且是有启发性的,如果同学对性能较感兴趣,那么我们对以一起深入

2、研究各个点。对于性能调优,通常会有三个步骤:1,性能监控;2,性能剖析;3,性能调优我们对于操作系统的性能关注主要在下面几个点上:CPU利用率、CPU调度执行队列、内存利用率、网络I/O、磁盘I/O。1,CPU利用率对于一个应用来说,为了让应用达到最好的性能和可扩展性,我们不仅仅要充分利用CPU周期内可用的部分,而且要让这部分CPU的使用更有价值,而不是浪费。能够让CPU的周期利用的更充分对于多线程应用运行在多处理器和多核系统上至很有挑战性的。另外,当CPU达到饱和状态的时候并不能说明CPU的性能和伸缩性已经达到了最佳的状态。为了区分

3、应用是如何利用CPU资源的,我们必须从操作系统级别来检测。在很多操作系统上,CPU的利用率统计报告通常包括用户和系统或内核对操作系统的使用。用户对CPU的使用是指应用用來执行应用代码执行所需要的时间。相比之下,内核和系统对CPU的使用是指应用用來执行操作系统内核代码锁花费的时间。高的内核或者系统CPU使用率可以表明共享资源紧迫,或者是冇大量的I/O设备交互。理想的状态为了提高应用的性能和伸缩性,让内核或系统CIT时间为0%,因为花在执行内核或系统代码的时间是可以用来执行应用代码的。因此CPU使用优化的一个正确方向就是尽可能减少CPU花

4、在执行内核代码或者系统代码上的时间。対于计算密集型应用,性能监控比监测用户CPU使用和内核或系统CPU使用要更深层次,在计算密集型应用中,我们需要监测CPU时钟周期内的执彳亍执行条数(Instructionsperclock;IPC)或者是每条CPU执彳亍所使用的CPU周期(cyclesperinstruction;CPI)。对于计算密集型应用来说我们从这两个维度来监测CPU是不错的选择,因为现代操作系统的打包CPU性能报告工具通常只会打印CPU的利用率,而不会打印CPU周期内CPU用来执行指令的时间。这意味着当CPU正在等待内存中的

5、数据的时候,操作系统CPU性能报告工具也会认为CPU是止在使用的状态,我们把这个场景叫做“Stall”,“Stall”场景经常会发生,比如在CPU正在执行指令的任何时候,只要是指令需要的数据没有准备好,也就是没冇在寄存器或者CPU缓存内,都会发生"Stall"场景。当“Stall”场景发生的时候CPU会浪费时钟周期,因为CPU必须耍等待指令需要的数据到达寄存器或者缓冲器。而且在这个场景中,数百个CPU时钟周期被浪费是很正常的事情,因此在计算密集型应用屮,提高性能的策略是减少“Stall”场景的发生或者是增强CPU的缓存使用从而使得更少

6、的CPU周期因为等待数据而浪费掉。这类的性能监控知识已经超越了木书的内容,需要性能专家的帮助了。然而,后而讲到的OracleSolarisStudioPerformanceAnalyzer这种性能剖析工具将会包括此类数据。1,CPU调度队列除了对CPU使用的监控,我们也可以通过监控CPU执行队列来检查系统是否已经满负载。执行队列是用来存储轻量级进程,这些进程通常是已经准备好执行了但是正在等待CPU调度而在调度队列等待的一种状态,当轻量级进程别当前处理器能来得及处理的数量更多的时候,调度队列将会产生。比较深的CPU调度队列表明系统已经满

7、负荷了。系统的执行队列深度等丁虚拟处理器执行不了的等待数,虚拟处理器数等于系统的硬件线程数。我们可以用java的api来拿到虚拟处理器数,Runtime,avaliableProcessors()。当执行队列深度大于虚拟处理器个数的四倍或更多的时候,操作系统将会出现反应迟钝的现象。对丁CPU调度队列的检测的一个通用指导是当我们发现队列深度高于虚拟进程数一倍的时候就要注意了,但是没有必要立即采取行动。当大于三倍或四倍或者更高的吋候就要注意了,解决问题刻不容缓。通常有两个可选的途径来观察队列的深度,第一个是通过增加CPU來分担负载或者减少

8、对现有CPU的负载。这种途径从本质上减少了每个执行单元的负载线程数,从而减少执行执行队列的深度。另外的一种途径是通过剖析系统运行的应用来增加CPU的使用率,换个说法就是寻找一种可以减少花费在垃圾回收上的CPU周期,或者寻

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。