`
javafxguy
  • 浏览: 149327 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Java虚拟机的调优参考

    博客分类:
  • java
阅读更多
(转载请注明出处:Java,JavaFX技术交流 http://javafxguy.iteye.com)

在任何一个的生产系统上线前,系统性能调优(Tuning)都是很重要的一步。通常,应用系统的软硬件的缺省值都是给开发平台(或小规模系统)设计的,用来跑生产系统几乎都无法发挥出软硬件的最佳性能。有时,系统调优前后的性能会差好几倍。另一方面,由于应用程序的开发人员通常都是针对功能作开发的,因此,开发硬件都是比生产环境要小的机器。例如,生产系统是一台8个CPU,64GB内存的服务器,而开发服务器可能只有1个CPU和4GB内存。所以,在开发人员中常常不具备做性能方面测试的软硬件环境。另外,有的程序员甚至在开发时都没有考虑到多用户并发的环境,程序中存在单点瓶颈等问题。在做压力测试和调优时,往往就会发现这些关键点。

由于应用系统是个软硬件的完整统一体,系统调优往往需要涉及硬件、网络、操作系统、中间件,应用程序和数据库等方面。在调优的过程中,往往需要发现存在瓶颈的地方(也就是导致系统变慢的部分),分析原因,从而改进和确定较优的参数。

我们在作JVM的调优前,通常先要了解运行的硬件平台,操作系统和中间件,然后针对这些情况配置相应的系统参数,在测试中不断完善参数。由于性能调优需要对系统非常了解,并且需要丰富的经验,因此不是一件容易的事情。这里介绍一些很好的参考资料,就是SPEC.org的网站。这是硬件厂商公布benchmark测试结果的地方,通常硬件厂商会把系统调到最优化才公布结果的,因此很有借鉴意义。常见和JVM有关的benchmark值主要有SPECjAppServer2004和SPECjbb2005。前者是J2EE应用服务器的性能指标,后者是服务器端Java虚拟机的性能指标。给大家介绍这个网站的目的是说大家可以参考硬件厂商给出的JVM配置,在根据自己应用环境的特点,较快的得出较好的参数。例如,这个网页给出了SUN公司T5120服务器+应用服务器9.1 +JDK1.5的SPECjAppServer2004值是8,439.36:

http://www.spec.org/jAppServer2004/results/res2007q4/jAppServer2004-20071106-00092.html

我们现在要关心的不是Benchmark的值(注:实际上,Sun公司的这个值是个很不错的结果),而是留意在这种环境下JVM的参数配置,可以找到一个栏目“Notes / Tuning Information”:

(转载请注明出处:Java,JavaFX技术交流 http://javafxguy.iteye.com http://www.v-soul.com http://www.800citizen.org)

JVM Options:  -server -XX:+AggressiveHeap
    -Xmx2560m -Xms2560m -Xmn1024m -Xss128k
    -XX:PermSize=256m
    -XX:+DisableExplicitGC
    -XX:ParallelGCThreads=24
    -XX:LargePageSizeInBytes=256m
    -XX:+UseParallelOldGC
    -XX:+AggressiveOpts
    -DAllowManagedFieldsInDefaultFetchGroup=true
    -DAllowMediatedWriteInDefaultFetchGroup=true
    -XX:-UseBiasedLocking
    -Dcom.sun.ejb.containers.readonly.relative.refresh.mode=true
    -Dcom.sun.jts.dblogging.insertquery=insert into
txn_log_table_0 values ( ? , ? , ? )
    -Dcom.sun.jts.dblogging.deletequery=delete from
txn_log_table_0 where localtid = ? and servername = ?
    -Dcom.sun.jdo.spi.persistence.support.sqlstore.
MULTILEVEL_PREFETCH=true

那么上面那些参数是什么意思呢?上述段落中“-XX”的参数是SUN JVM的扩展选项,其中以下的这些都是和垃圾回收(GC)有关:

  -XX:PermSize=256m
  -XX:+DisableExplicitGC
  -XX:ParallelGCThreads=24
  -XX:+UseParallelOldGC
 -XX:+AggressiveHeap

下面这个选项是选择大的内存页面: -XX:LargePageSizeInBytes=256m

"-XX:+AggressiveOpts"是一些试验性优化参数,“-XX:-UseBiasedLocking”是非竞争性的同步选项。

而选项“-Xmx2560m -Xms2560m -Xmn1024m -Xss128k”则是初始堆栈的内存值,注意-Xmx和-Xms的值是一样的,这样系统性能会较平稳些。

至于这些参数详细代表什么意义,大家可以google一下就很容易了解。这是Sun网站上的说明,有兴趣的可以读一下: http://java.sun.com/performance/reference/whitepapers/tuning.html

如果你的应用系统是JDK1.5,硬件是T5120,操作系统是Solaris,那么这些参数就很有借鉴意义。如果你的硬件系统不是T5120,但是使用SUN的JDK1.5 ,这些参数也是有一定参考作用。当然,最理想的是选择一个和自己的环境最近似的结果来参考。大多数软硬件的测试结果都可以在SPEC.org上找到,如果你的系统是J2EE的3层架构,可以用jAppServer2004指标,如果是纯JAVA的应用,可用jbb2005的结果:

http://www.spec.org/jAppServer2004/
http://www.spec.org/jbb2005/

需要注意的是,这些调优参数只是提供了一个思路,具体是否合适你的应用还要看实测结果。

(转载请注明出处:Java,JavaFX技术交流 http://javafxguy.iteye.com)

Online Canadian Citizenship Test http://www.v-soul.com

U.S. Citizenship Application http://www.800citizen.org
分享到:
评论
3 楼 gembler 2009-04-15  
javafxguy 写道

那么上面那些参数是什么意思呢?上述段落中“-XX”的参数是SUN JVM的扩展选项,其中以下的这些都是和垃圾回收(GC)有关:

  -XX:PermSize=256m
  -XX:+DisableExplicitGC
  -XX:ParallelGCThreads=24
  -XX:+UseParallelOldGC
 -XX:+AggressiveHeap
  -XX:+AggressiveOpts
  -XX:-UseBiasedLocking


UseBiasedLocking这个是针对无竞争同步的
AggressiveOpts这个是针对编译器的
与GC有关么?

还有,jvm参数调优,很多情况不是指标能适应的,是经过测试、分析得出的结论

还有,既然提到GC策略,肯定是少不了去衡量cms
2 楼 unsid 2009-04-14  
太好了,正需要这么一个经验库
问几个词:
benchmark值 代表什么
SPECjAppServer2004和SPECjbb2005 什么意思
1 楼 idealab 2009-04-14  
学习了。。虽然看不懂

相关推荐

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    long果 深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)。讲解相当详细,值得一看。下载仅供参考学习,侵权联删。

    优化Java虚拟机总结(jvm调优)

    主要介绍了优化Java虚拟机总结(jvm调优),具有一定借鉴价值,需要的朋友可以参考下

    深入java虚拟机

    1.11 JVM调优总结(十二)-参考资料 1.12 JVM 几个重要的参数 1.13 慢慢琢磨JVM——恭喜JavaEye重新开张 2. 线程安全 2.1 java线程安全总结 3. JVM实战 3.1 通过Java/JMX得到full GC次数? 3.2 如何更快的启动...

    Java虚拟机性能参数调优指导书

    Java的优势在于稳定性和良好的可移植性,它将很多需要程序员完成的精细的工作交由JVM完成,曾经有这样一个比喻说,如果这世界上80%的程序员都是能够胜任自己管理内存的工作的话,那么就让Java消失吧。话不一定对,...

    JVM系列之性能调优参考手册(实践篇).pdf

    JVM系列之性能调优参考手册(实践篇).pdf,资源分享达人

    大话JAVA性能优化PDF

    作者力求做到知识的综合传播,而不是仅仅只针对Java虚拟机调优进行讲解,另外力求每一章节都有实际的案例支撑。具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、...

    大话JAVA性能优化.pdf

    作者力求做到知识的综合传播,而不是仅仅只针对Java虚拟机调优进行讲解,另外力求每一章节都有实际的案例支撑。具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、...

    大话JAVA性能优化 周明耀 PDF

    作者力求做到知识的综合传播,而不是仅仅只针对Java虚拟机调优进行讲解,另外力求每一章节都有实际的案例支撑。具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、...

    基于Linux网络计算机Java虚拟机的性能优化经验谈.pdf

    基于Linux网络计算机Java虚拟机的性能优化经验谈.pdf

    Tomcat性能调优方案[参考].pdf

    Java虚拟机调优是指选择合适的JVM版本,以满足项目的需求。在选择JVM版本时,需要考虑到项目的性能要求,选择高版本的JVM可以提高系统的性能。例如,JDK1.4比JDK1.3的性能提高了近10%-20%,JDK1.5比JDK1.4的性能提高...

    02-5的深入理解Java虚拟机书的学习-上篇

    马士兵jvm调优参考资源

    Java虚拟机GC日志分析

    主要介绍了Java虚拟机GC日志分析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    JavaGC专家指南.pdf

    理论结合实践,从虚拟机如何加载类,如何分配内存空间,如何垃圾回收以及如何调优,调优的工具、命令、案例等各方面描述了虚拟机调优掌握的理论、工具、命令以及基本分析思路,是一本不错的参考手册

    JVM 调优之 Eclipse 启动调优实战

    本文是我12年在学习《深入理解Java虚拟机:JVM高级特性与最佳实践》时,做的一个 JVM 简单调优实战笔记,版本都有些过时,不过调优思路和过程还是可以分享给大家参考的。 环境基础配置 硬件: Dell E5410, Intel i3...

    java高级特性整理资料(反射+并发+jvm)

    《Java Reflection in Action》、《JAVA并发编程实战》、《JVM调优总结》、《深入理解Java虚拟机JVM高级特性与最佳实践》、《concurrent programming in java》,适合想深入java技术的学生和程序员学习和参考。

    jvm工具、参数调优&调试技巧

    目 录 1 表格列表 2 一、 JVM工具 2 1. jps:虚拟机进程状况工具 2 2. jstat:虚拟机统计...四、 参考/引用资料 7 表格列表 表格 1 调试参数 3 表格 2 JVM调优参数 4 表格 3 行为参数 5 表格 4 JVM启动参数 6 一、

    使用JUnit对规则进行单元测试

    火龙果软件工程技术中心 本文内容包括:引言编写Mock类将测试数据保存到配置文件中编写SettersMap类编写可复用的TestCase类用TestSuite组织测试用例...Java虚拟机的初始堆大小(JVMinitialheapsize)是一个影响JVM的

Global site tag (gtag.js) - Google Analytics