`
簡單從泚銷夨
  • 浏览: 74356 次
  • 性别: Icon_minigender_1
  • 来自: 文一西路969号
社区版块
存档分类
最新评论

JVM-GC调优的经验和规则

    博客分类:
  • java
 
阅读更多

JVM-GC调优的经验和规则

 

1.年轻代大小选择

响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择).在此种情况下,年轻代收集发生的频率也是最小的.同时,减少到达年老代的对象.

吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度.因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用.

避免设置过小.当新生代设置过小时会导致:1.YGC次数更加频繁 2.可能导致YGC对象直接进入旧生代,如果此时旧生代满了,会触发FGC.

 

2.年老代大小选择

响应时间优先的应用:年老代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话率和会话持续时间等一些参数.如果堆设置小了,可以会造成内存碎 片,高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间.最优化的方案,一般需要参考以下数据获得:

并发垃圾收集信息、持久代并发收集次数、传统GC信息、花在年轻代和年老代回收上的时间比例。

吞吐量优先的应用:一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代.原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象.

 

3.较小堆引起的碎片问题

因为年老代的并发收集器使用标记,清除算法,所以不会对堆进行压缩.当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象.但是,当堆空间较小时,运行一段时间以后,就会出现"碎片",如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记,清除方式进行回收.如果出现"碎片",可能需要进行如下配置:

-XX:+UseCMSCompactAtFullCollection:使用并发收集器时,开启对年老代的压缩.

-XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩

 

4.用64位操作系统,Linux下64位的jdk比32位jdk要慢一些,但是吃得内存更多,吞吐量更大

 

5.XMX和XMS设置一样大,MaxPermSize和MinPermSize设置一样大,这样可以减轻伸缩堆大小带来的压力

 

6.使用CMS的好处是用尽量少的新生代,经验值是128M-256M, 然后老生代利用CMS并行收集, 这样能保证系统低延迟的吞吐效率。 实际上cms的收集停顿时间非常的短,2G的内存, 大约20-80ms的应用程序停顿时间

 

7.系统停顿的时候可能是GC的问题也可能是程序的问题,多用jmap和jstack查看,或者killall -3 java,然后查看java控制台日志,能看出很多问题。(相关工具的使用方法将在后面的blog中介绍)

 

8.仔细了解自己的应用,如果用了缓存,那么年老代应该大一些,缓存的HashMap不应该无限制长,建议采用LRU算法的Map做缓存,LRUMap的最大长度也要根据实际情况设定。

 

9.采用并发回收时,年轻代小一点,年老代要大,因为年老大用的是并发回收,即使时间长点也不会影响其他程序继续运行,网站不会停顿

 

10.JVM参数的设置(特别是 –Xmx –Xms –Xmn -XX:SurvivorRatio  -XX:MaxTenuringThreshold等参数的设置没有一个固定的公式,需要根据PV old区实际数据 YGC次数等多方面来衡量。为了避免promotion faild可能会导致xmn设置偏小,也意味着YGC的次数会增多,处理并发访问的能力下降等问题。每个参数的调整都需要经过详细的性能测试,才能找到特定应用的最佳配置。

 

转自:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

分享到:
评论

相关推荐

    jvm和gc详解及调优

    《JVM和GC详解及调优》是一本深入解析Java虚拟机(JVM)和垃圾收集(Garbage Collection,简称GC)的专业...对于团队负责人或系统架构师而言,理解JVM和GC调优也是必不可少的技能,有助于提升整个系统的稳定性和效率。

    JVM性能调优-JVM内存整理及GC回收.pdf

    总结来说,JVM性能调优中的垃圾回收(GC)和内存管理是确保Java应用高效运行的关键。了解Java对象引用类型、垃圾回收算法以及分代处理垃圾的概念是进行JVM性能调优的基础。这些知识点对于准备Java面试的开发者来说,...

    JVM性能调优

    ### JVM性能调优 #### JVM概念与发展历程 Java虚拟机(JVM)是Java Virtual Machine的简称,它是一种能够执行Java字节码的虚拟机。JVM的主要作用是在不同...在实践中不断学习和摸索,才能真正掌握JVM性能调优的精髓。

    A-JUC-JVM-Java并发知识..pdf

    JVM运行时可通过参数进行配置,以便进行性能调优。参数分为几种类型,包括XX参数、X参数、标配参数等。合理设置这些参数,例如堆大小-Xms和-Xmx、线程栈大小-Xss、元空间大小-XX:MetaspaceSize等,对于JVM性能优化至...

    JVM01-课程介绍1

    JVM(Java Virtual ...总的来说,"JVM01-课程介绍1"是一门全面而深入的JVM教程,旨在帮助学习者建立扎实的JVM理论基础,掌握性能分析和问题排查技巧,以及积累实战经验,从而提升在Java开发和运维领域的专业能力。

    性能调优文档_自动化测试

    - 经验法则建议,服务端JVM的 `-Xmn`(新生代大小)最好设置为 `-Xmx` 的1/3,以优化垃圾收集(GC)性能。 1.1.2 **连接器调整** - Tomcat的连接器通过配置`<Connector>`标签进行管理,可以通过启用线程池来改善...

    gcviewer监控gc工具

    GCViewer通过读取这些日志,可以实时监控GC的执行情况,对于排查性能问题和调优有着重要的作用。 三、主要功能 1. **实时监控**:GCViewer能够实时更新GC日志中的信息,动态显示GC事件,使开发者能够及时发现异常...

    java,weblogic和jdk性能调优文档

    - **垃圾收集器选择与调优**:选择适合工作负载的垃圾收集器,例如Parallel GC、CMS GC或G1 GC。调整垃圾收集频率和暂停时间目标(`-XX:MaxGCPauseMillis`)以平衡吞吐量和响应时间。 - **类加载与方法区优化**:...

    JVM学习资料+笔记

    5. 类型系统:JVM支持基本类型、引用类型和数组,理解它们的交互和转换规则有助于编写高效代码。 二、JVM诊断 1. JMX(Java Management Extensions):提供管理和监控JVM的工具,可以查看运行时的内存、线程、类...

    从 0 开始带你成为JVM实战高手【完整版】

    - **GC日志分析**:通过JVisualVM等工具进行性能监控与调优。 3. **性能调优案例** - 分析常见的JVM性能瓶颈及其解决策略。 - 使用`-XX:+PrintGCDetails`等命令收集GC日志。 - 基于实际情况调整JVM参数,如`-...

    jvm快速入门

    8. **JVM调优**:包括堆大小设置、新生代与老年代比例、GC策略选择等,通过监控工具如JVisualVM进行分析和调整,以提升系统性能。 9. **JVM参数设置**:如-Xms和-Xmx设置堆内存大小,-XX:NewRatio调整年轻代和老年...

    JVM面试专题.zip

    - **GC调优**:选择合适的GC算法和参数,例如-XX:+UseConcMarkSweepGC启用CMS收集器。 - **类加载器调优**:理解双亲委派模型,避免类加载混乱。 - **堆栈大小调整**:通过-Xss设置每个线程的栈大小。 6. **性能...

    全套JVM面试题!面试必备!

    JVM调优主要包括堆大小调整、新生代与老年代比例设置、GC策略选择、内存泄露检测等。使用工具如VisualVM、JProfiler可以帮助分析和调优。 6. **谈谈JVM的垃圾收集器?** 常见的垃圾收集器有Serial、Parallel、...

    eclipse调优及使用

    本文将详细介绍如何调优Eclipse,以提高启动速度,减少因JVM内存回收导致的卡顿问题,并涵盖一系列实用设置,如代码折叠、本地历史、代码格式化以及各种编辑器和工作空间的个性化配置。 ### 加快启动速度 1. **...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    6. **JVM性能监控工具**:如JConsole、VisualVM和JMX,这些工具能帮助开发者实时监控JVM的状态,包括CPU使用率、内存分配、线程状态等,从而发现问题并进行调优。 7. **性能调优**:包括JVM参数调整、代码优化、...

    jvm高级特性与最佳实践第二版源代码

    8. **第10章:JVM内存模型与并发内存** - 讨论Java内存模型(JMM)和并发内存访问的规则,如volatile、synchronized关键字的实现。源代码可能涉及并发编程中的数据一致性问题。 9. **第11章:JVM异常处理与断言** -...

    eclipse性能优化 <深度理解jvm>读书笔记

    在本文中,我们将探讨Eclipse的性能调优策略,以及JVM内存管理和垃圾回收机制等相关知识点。 首先,Eclipse作为一款强大的Java开发工具,其性能优化主要包括以下几个方面: 1. **启动速度优化**:可以通过减少工作...

Global site tag (gtag.js) - Google Analytics