Java 6中的线程优化真的有效么?——第二部分 - 编程入门网
比较保守,根据不同条件(比如锁对象数据大小和其他OS特定的特性) 及早地关掉了它。
结论 当我刚开始这个实验,解释应用各种锁优化的Hotspot的有效性的时候,我估 计它将花费我几个小时的时间,最终这会丰富我的blog的内容。但是就像其他的 基准测试一样,对结果进行验证和解释的过程最终耗费了几周的时间。同样,我 也与很多专家进行合作,他们分别花费了大量时间检查结果,并发表他们的见解 。即使在这些工作完成以后,仍然很难说哪些优化起作用了,而哪些没有起作用 。尽管这篇文章引述了一组测试结果,但它们是特定我的硬件和系统的。大家可 以考虑是否能在自己的系统上看到相同类型的测试结果。另外,我最初认为这不 过是个小规模基准测试,但是后来它逐渐既要满足我,也要满足所有审核代码的 人,而且去掉了Hotspot不必要的优化。总之,这个实验的复杂度远远地超出了我 的预期。 如果你需要在多核机器上运行多线程的应用程序,并且关心性能,那么很明显 ,你需要不断地更新所使用的JDK到最新版本。很多(但不是全部)前面的版本的 优化都可以在最新的版本中获得兼容。你必须保证所有的线程优化都是激活的。 在JDK 6.0中,它们默认是激活的。但是在JDK 5.0中,你需要在命令行中显式地 设置它们。如果你在多核机器上运行单线程的应用程序,就要禁用除第一个核以 外所有核的优化,这样会使应用程序运行得更快。 在更低级的层面上,单核系统上锁的开销远远低于双核处理器。不同核之间的 协调,比如存储关卡语义,通过关掉一个核运行的测试结果看,很明显会带来系 统开销。我们的确需要线程优化,以此降低这一开销。幸运的是,锁粗化和(尤 其是)偏向锁对于基准测试的性能确实有明显的影响。我也希望逸出分析与锁省 略一起更能够做到更好,产生更多的影响。这项技术会起作用,可只是在很少的 情况下。客观地说,逸出分析仍然还处于它的初级阶段,还需要大量的时间才能 变得成熟。 最后的结论是,最权威的基准测试是让你的应用程序运行在自己的系统上。当 你的多线程应用的性能没有符合你的期望的时候,这篇文章能够为你提供了一些 思考问题的启示。而这就是此文最大的价值所在。 Java 6中的线程优化真的有效么?——第二部分(6)时间:2011-05-20 infoq.com Jeroen Borgers 译:韩锴关于Jeroen Borgers Jeroen Borger是Xebia 的资深咨询师。Xebia是一家国际IT咨询与项目组织公 司,专注于企业级Java和敏捷开发。Jeroen帮助他的客户攻克企业级Java系统的 性能问题,他同时还是Java性能调试课程的讲师。他在从1996年开始就可以在不 同的Java项目中工作,担任过开发者、架构师、团队lead、质量负责人、顾问、 审核员、性能测试和调试员。他从2005年开始专注于性能问题。 鸣谢 没有其他人的鼎力相助,是不会有这篇文章的。特别感谢下面的朋友: Dr. Cliff Click,原Sun公司的Server VM主要架构师,现工作在Azul System ;他帮我分析,并提供了很多宝贵的资源。 Kirk Pepperdine,性能问题的权威,帮助我编辑文章。 David Dagastine,Sun JVM性能组的lead,他为我解释了很多问题,并把我引 领到正确的方向。 我的很多Xebia的同事帮我进行了基准测试。 清单1.
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |