`
java-boy
  • 浏览: 248381 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM 调优 技巧 总结

    博客分类:
  • Java
阅读更多
写了好几篇关于这个方向的文章了,但连自己都感觉写的有点乱,没有总结。所以现在把所有方法整理到一起,如果以后又发现新的,我继续补充到这篇文章里。

这篇是技巧性的文章,如果要找关于GC或者调整内纯的文章,看我其他几篇文章。因为是JVM 调优总结,所以废话少说。从各方面一共收集到以下几个方法:

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代替。

分享到:
评论

相关推荐

    JVM性能调优总结.docx

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

    马士兵jvm调优笔记.docx

    ### 马士兵JVM调优笔记知识点梳理 ...以上是基于《马士兵JVM调优笔记》文档内容整理的关键知识点总结。通过理解和掌握这些概念与技巧,可以帮助开发者更高效地管理和优化Java应用程序的内存使用情况。

    JVM调优攻略.pdf

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

    JVM调优总结.rar

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

    JVM调优总结

    Java虚拟机(JVM)是Java程序运行的基础,它的性能直接影响到应用的效率和稳定性。JVM调优是一项复杂但至关重要的...阅读"JVM Customization @taobao.pdf"和"JVM调优总结.pdf"等资料,可以深入了解更多实用技巧和案例。

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

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

    个人总结之—JVM性能调优实战

    本总结旨在分享作者在实践中不断探索与总结的经验,为读者提供一份全面而实用的JVM调优指南。 #### 关键知识点 ##### 1. JVM基础知识 - **JVM结构与工作原理**:了解JVM的基本组成及其工作流程对于进行有效的性能...

    jvm 调优,对jvm参数的详细描叙

    本文旨在深入解析JVM调优的关键参数及其应用场景,帮助开发者更好地理解和掌握JVM调优技巧。 #### 一、常见JVM问题及解决方案 1. **内存溢出(Out of Memory)** - **Heap Space**:当JVM堆内存不足时,会抛出`...

    JVM实战-JVM调优案例分析与MyEclipse性能调优实战

    通过本次实验的学习与实践,我们不仅学会了如何使用VisualVM这一强大的多合一故障处理工具,还掌握了具体的性能调优技巧。经过一系列的调优操作后,MyEclipse和Eclipse的启动速度得到了显著提升,加载项目的时间明显...

    jvm调优总结

    本文将全面概述JVM调优的主要方面,包括内存管理、垃圾收集、类加载机制、线程优化以及相关的工具和诊断技巧。 一、内存管理 JVM内存主要分为堆内存和栈内存两大部分。堆内存用于存储对象实例,分为年轻代和老年代...

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

    《JVM工具、参数调优及调试技巧》 ...总结来说,熟练掌握JVM工具、参数调优和调试技巧,是每个Java开发者必备的能力。通过有效的监控、优化和问题解决,可以显著提升应用的稳定性和性能,为业务的高效运行保驾护航。

    JAVA JVM性能调优监控工具详解

    ### JAVA JVM性能调优监控工具详解 在Java开发过程中,特别是在企业级应用中,经常会遇到各种性能瓶颈问题,如内存溢出(`OutOfMemoryError`)、内存泄露、线程死锁、锁争用等问题。这些问题如果不能及时有效地解决...

    JVM优化与OOM分析PPT

    ### JVM优化与OOM分析 #### 一、JVM的重要性与作用 JVM(Java Virtual Machine)...本文档通过具体的案例分析,介绍了JVM的基本概念、工作原理以及调优技巧,希望能够帮助开发者更好地理解和掌握JVM调优的相关知识。

    深入JVM内核—原理、诊断与优化视频教程-3.常用JVM配置参数

    总结起来,深入理解JVM内核,熟练掌握诊断技巧,并合理调整JVM配置参数,是每一个Java开发者必备的技能。通过本教程的学习,你将能够运用这些知识有效地提升应用性能,解决实际工作中的各种挑战。

    JVM 1.42调优中文文档

    提供了输出示例、常见问题解答等资源,帮助读者更好地理解和应用调优技巧。 综上所述,JVM 1.4.2调优文档详细阐述了如何根据应用特性选择合适的垃圾收集器,调整堆内存大小,以及理解不同收集器的优缺点,旨在帮助...

    jvm工具、参数调优&调试技巧(补充+修正版)

    总结,掌握JVM工具的使用、合理调整JVM参数以及精通调试技巧是优化Java应用程序的关键。开发者应根据实际应用场景,灵活运用这些工具和方法,持续监控、分析和优化,以提高系统的稳定性和性能。

    JVM优化经验总结Java开发Java经验技巧共15页.p

    【标题】"JVM优化经验总结Java开发Java经验技巧共15页.p" 提供的信息表明,这是一份关于Java开发中的JVM优化经验的详细总结,共有15页的内容。在Java开发过程中,理解并掌握JVM(Java虚拟机)的优化技巧是至关重要的...

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

    5. **结束语**:作者可能在这部分总结了全书的主要观点,强调了持续学习和实践对于JVM调优的重要性。 6. **参考文献**:提供了进一步研究和学习的资源,可能包括其他专业书籍、论文和技术文档。 书中附带的表1和表...

    java第五阶段(项目梳理+面试题准备+jvm优化+mysql优化)

    8. **Java面经**:Java面试经验分享,通常包含了面试过程中遇到的实际问题和解答,可以帮助你了解实际面试的流程和常见问题,提升面试技巧。 通过以上各个领域的学习和实践,开发者能够提升自己的Java技术水平,更...

    Jvm优化的Java -Demo

    通过这个项目,我们可以学习到JVM调优的一些核心概念和实践技巧。 首先,JVM参数调整是提高应用程序性能的重要手段。这通常涉及到内存配置、垃圾收集器选择、线程堆栈大小等设置。例如,我们可以通过`-Xms`和`-Xmx`...

Global site tag (gtag.js) - Google Analytics