`

JVM 调优 技巧

    博客分类:
  • jdk
 
阅读更多
1.升级 JVM 版本。如果能使用64-bit,使用64-bit JVM。
          
            基本上没什么好解释的,很简单将JVM升级到最新的版本。如果你还是使用JDK1.4甚至是更早的JVM,那你首先要做的就是升级。因为JVM从1.4- >1.5->1.6可不是仅仅的版本号升级,或者仅仅往里面加了一堆新的语言特性,这么简单。而是真正在JVM做了重大的改进,每次版本升级,都有巨大的性能升级。尤其是SUN认识到java是知己的全部的时候(夸张点,但连股票号都改成JAVA了,呵呵)。如果你经常逛SUN 的JVM论坛,你就会发现实际上JVM上的毛病是这么多。如果你因为各种原因,而不能升级到1.6,那你可以升级到该版本的最新版。

2.选择一个正确的GC(Gargage Collection)。

        由于当JAVA程序GC的时候,会停下当前程序。尤其Full GC的时候,会停留很长时间。一般对于GUI程序来说,是很难接受的(想想Eclipse暂停的时候)。 JAVA5 以后,开始自带了好几种GC,你可以选择一个适合你的种类。有以下四种Serial Collector,Parallel collector,Concurrent Collector,Train Collector(废弃)。后面几种时候使用并行收集,所以理论上有效率更高(要求你有超过2CUP,但是现在多核开始普及了,呵呵)。提示:更改GC 种类以后要适当挺高JVM的内存量。

3.正确设置内存大小。对JVM堆内的各个区域(young,old,perm)正确设置大小。

          这个是最困难的调整,因为这个调整会直接影响GC的效率。而且由于各个程序的类型不用,所以没有一个通用的数据。除了几个常用规则以外,需要使用工具(jstat,jvmstat,jconsole等等)仔细调整。下面会提到几个常用的准则。通常使用一下几个参数调整-Xms -Xmx-XX:MaxPermSize。
     
          3.1 调高-XX:NewRatio(NewSize/MaxNewSize)的值,会减少young gc的次数,但会增加old gc的时间。

          3.2 增加普通GC的方法(减小Full GC)。扩大young区域的大小(最大40%),并过大Survivor的区域。使得更多的object留在young gen。


4.减小类的使用量,注意类的load和unload,减少JSP页数。

        类实际上也是对象,会直接分配perm区域里,即使Full GC也会很少收集。JSP也会分配到perm区域里,效果同理。如果perm过大,超过XX:MaxPermSize值,会发生 OutOfMemoryError: PermGen space异常。解决方法是提高-XX:MaxPermSize值。

5.避免使用-Xnoclassgc       


6.如果是RMI程序,要注意调整RMI DGC的时间。


以下是几个写程序时,应该注意的地方。也可减小GC,提高JVM性能。

       1.不要使用System.gc()方法。

       因为它会产生Full GC。

       2.尽可能少分配大的临时对象(生命周期短的)

       可能会直接分配到old区域里,old区域只有Full GC的时候会收集。     

       3.避免使用finalize()方法。

       finalize()会增加GC的负担,使用java.lang.ref代替。







我是这么配置的

catalina

SET JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC -verbose:gc -Xms4096m -Xmx8192m -XX:PermSize=256M -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false" -XX:-HeapDumpOnOutOfMemoryError  -XX:-DisableExplicitGC
分享到:
评论

相关推荐

    JVM调优技巧

    JVM深入理解,JVM调优技巧

    Java性能优化指南:JVM调优技巧与实践

    通过合理配置JVM参数和采用一些调优技巧,开发者可以显著提高应用程序的性能。本文将探讨一些常用的JVM性能调优技巧,并提供代码示例来展示这些技巧的应用。 JVM性能调优是一个多方面的任务,涉及JVM配置、垃圾回收...

    JVM调优,GC算法汇总

    了解并熟练掌握这些GC算法和JVM调优技巧,对于解决性能问题、优化Java应用的运行效率至关重要,同时也是面试中经常被问到的话题。通过实践和理解,开发者可以更好地理解和控制JVM的行为,从而编写出更高效、更稳定的...

    马士兵jvm调优笔记.docx

    ### 马士兵JVM调优笔记知识点梳理 #### 一、Java内存结构 Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及...

    monkey老师的jvm 调优

    Monkey老师的JVM调优课程,无疑为我们提供了一个宝贵的平台,来深入探究JVM的工作原理及其优化技巧。下面,我们就一起来深入学习Monkey老师关于JVM调优的核心知识点。 首先,我们要明白JVM的重要性。它是Java程序...

    jvm调优的实际应用

    《JVM调优实战解析》 在Java开发领域,JVM(Java Virtual Machine)是运行所有Java应用程序的基础,它的性能直接影响着程序的运行效率。因此,掌握JVM调优技术对于提升系统的稳定性和性能至关重要。本文将围绕"JVM...

    JVM调优攻略.pdf

    《JVM调优攻略》是一份详尽的文档,旨在帮助开发者理解并掌握Java虚拟机(JVM)的优化技巧。本指南不仅适用于初学者,对于有一定基础的开发人员来说也同样具有很高的参考价值。文档中提到的核心概念包括JVM的工作原理...

    JVM调优实战

    JVM调优实战 介绍JVM调优的技巧相关参数的设置等等

    JVM调优和故障排除手册

    在描述中提到了文档内容的实战化和量化,暗示了手册中不仅会介绍JVM理论知识,更注重实际应用中的调优技巧和故障排查方法。同时,文档还指出了许多JVM相关书籍倾向于理论阐述,而本手册则更强调理论与实践的结合。 ...

    jvm调优

    它涉及到内存管理、线程调度、垃圾回收等多个方面,理解并掌握JVM调优技巧,能有效避免性能瓶颈,提高应用的稳定性和响应速度。本文将结合源码分析和工具使用,深入探讨JVM调优的方方面面。 首先,我们需要了解JVM...

    spring 微服务相关框架学习。以及记录 jvm 调优 数据监控 并发控制-spring-frame.zip

    在IT行业中,Spring框架...总的来说,理解并熟练运用Spring微服务框架、JVM调优技巧、数据监控工具以及并发控制策略,是成为一名优秀Java开发者的基础。在实践中不断探索和学习,才能更好地应对复杂的分布式系统挑战。

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

    3. 不稳定参数(不稳定参数):以“-XX”开头,这些是非标准化参数,主要用于JVM调优和Debug。它们可以开启或关闭某些特性,或者对某些特性设置具体的数值。例如,“-XX:+UseConcMarkSweepGC”用于启用CMS垃圾回收器...

    练习JVM调优-jvm_demo.zip

    通过对"jvm_demo-master"项目的实践和学习,我们可以掌握JVM调优的基本技巧,理解如何根据应用特点调整JVM配置,以实现性能的最大化。同时,这也会帮助我们在实际工作中更好地应对各种性能挑战,提升Java应用程序的...

    JVM调优总结.rar

    通过以上实战总结,我们可以更好地理解和掌握JVM调优的技巧,为Java应用程序的高效运行提供保障。在实践中,每个应用都有其特定需求,因此调优并非一成不变,而是需要根据实际情况灵活调整。不断学习和实践,才能...

    JVM调优测试-jvmDemo.zip

    在Java开发领域,JVM(Java Virtual Machine)是运行所有Java应用程序的核心,它负责解析字节码并执行程序。..."JVM调优测试-jvmDemo"这个项目应该就是提供了一个实践平台,帮助开发者深入了解和掌握这些技巧。

    Java问题定位技术(书签版)—JVM调优

    《Java问题定位技术(书签版)—JVM调优》这本书可能涵盖了以上这些内容,通过深入学习,开发者可以掌握更高级的故障排查技巧,比如使用`jmap`、`jhat`等工具进行堆内存分析,或者利用`jfr`进行飞行记录,获取详细的...

    JVM性能调优总结.docx

    本文将总结JVM性能调优的经验和技巧,并提供一些实用的配置参数和建议。 一、堆大小设置 堆大小是JVM性能调优中的一个关键参数。堆大小的设置直接影响到系统的性能和稳定性。堆大小有三方面限制:相关操作系统的...

    img JVM调优实战.pdf

    通过这些实际操作,可以进一步理解和掌握JVM调优的技巧和策略。文档的附录部分可能会给出一些典型配置的示例,供读者参考和应用。 总体而言,JVM调优是一个系统化的过程,它需要对JVM的工作机制有深入的理解,并且...

    基于JVM 调优的技巧总结分析

    本文将深入探讨几个关键的JVM调优技巧。 首先,升级JVM版本至关重要。随着Java版本的迭代,JVM在性能和稳定性方面都有显著提升。从JDK1.4到1.6,乃至更高的版本,每次更新不仅引入了新特性,还对JVM内部进行了大量...

Global site tag (gtag.js) - Google Analytics