16java企业级开发必备高级技术_第1页
16java企业级开发必备高级技术_第2页
16java企业级开发必备高级技术_第3页
16java企业级开发必备高级技术_第4页
16java企业级开发必备高级技术_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北风网项目培训第十六课讲师:specialjava企业级开发必备高级技术学习目标1:jvm调优2:jvm最佳实践调优方法1:新对象预留新生代2:大对象进入老年代3:稳定与震荡的堆大小4:吞吐量优化5:降低停顿新对象预留在新生代

由于fullGC的成本要远远高于MinorGC,因此尽可能将对象分配在新生代是明智的。大部分情况下JVM会尝试在eden区分配对象,但由于空间紧张等,很可能不得不将部分年轻对象向老年代压缩,所以调优时,可以为应用程序分配一个合理的新生代空间,以最大限度避免新对象直接进入老年代。-XX:+PrintGCDetails-Xmx20M-Xms20M与-XX:+PrintGCDetails-Xmx20M-Xms20M-Xmn6M比较大对象进入老年代

将大对象直接分配到老年代,保持新生代对象的结构的完整性,以提高GC效率。-XX:+PrintGCDetails-Xmx20M-Xms20M与-XX:+PrintGCDetails-Xmx20M-Xms20M-XX:PretenureSizeThreshold=1000000进行比较观察出大对象分配给老年代-XX:PretenureSizeThreshold:设置大对象直接进入老年代的阈值,当对象的大小超过这个值,将直接在老年代分配.稳定震荡堆大小

稳定的堆大小是对垃圾回收有利的,获得一个稳定的堆大小的方法是使-Xms和-Xmx的大小一致。吞吐量优先

吞吐量优先的方案会尽可能减少系统的执行垃圾回收的总时间,故可以考虑关注系统吞吐量的并行回收收集器。对于4G内存32核CPU的计算机上使用以下参数设置:1:-Xmx3800M-Xms3800M2:-Xss128k:减少线程栈大小3:-Xmn2G:设置新生代大小4:-XX:+UseParallelGC:新生代并行回收器,这是一个关注吞吐量的收集器,可以尽量减少GC的时间5:-XX:+ParallelGCThreads=20:设置用于垃圾回收的线程数,通常情况下可以和CPU数量相等。但CPU较多的情况下,设置相对较小的数值也是合理的6:-XX:+UseParallelOldGC:老年代也使用并行回收收集器。降低停顿案例

为了降低应用软件在垃圾回收的停顿,首先考虑的是使用关注停顿的CMS回收器,其次,为了减少FullGC次数,应尽量将对象预留在新生代,因为新生代的MinorGC成本远低于老年代的FullGC可以如下设置降低停顿1:-XX:ParalleGCThreads:设置20个线程进行垃圾回收2:-XX:UseParNewGC:新生代使用并行回收器3:-XX:+UseConcMarkSweepGC:使用CMS收集器降低停顿4:-XX:SurvivorRatio=8设置eden区和survivor区的比例为8:15:-XX:TargetSurvivorRatio=90:设置survivor使用率为90%6:-XX:MaxTenuringThreshold=30:年轻对象到老年对象的年龄默认是15次,也就是15次minorGC依然存活,故设置为30,即尽量让对象保存在新生代快照堆在性能问题排查中,分析快照(Dump)是不可缺少的环节。获取GC信息:-verbose:gc或-XX:+PrintGC都能获取GC信息-XX:+PrintGCDetails:获取更加详细的信息。-XX:+PrintGCTimeStamps:获取GC的频率和间隔-XX:+PrintHeapAtGC:获取堆的使用情况-Xloggc:D:\gc.log:指定日志情况调优实际战:

Tomcat启动加速1:添加GC日志setCATALINA_OPTS=%CATALINA_OPTS%"-Xloggc:gc.log"2:设置堆大小setCATALINA_OPTS=%CATALINA_OPTS%"-Xmx32M"setCATALINA_OPTS=%CATALINA_OPTS%"-Xms32M"3:设置禁用GCsetCATALINA_OPTS=%CATALINA_OPTS%"-XX:+DisableExplicitGC"4:扩大新生代的大小setCATALINA_OPTS=%CATALINA_OPTS%"-XX:NewRatio=2"5:禁止JVM安全校验setCATALINA_OPTS=%CATALINA_OPTS%"-Xverify:none"6:禁止用元数据回收setCATALINA_OPTS=%CATALINA_OPTS%"-Xnoclassgc"JMeter使用:1:添加线程组,线程组将模拟用户线程访问Tomcat服务器。JMeter使用:2:设置10个线程数及200次循环JMeter使用:3:添加HTTP请求JMeter使用:4:设置HTTP请求服务器IP端口号等JMeter使用:5:添加一份报告调优设置:setCATALINA_OPTS=%CATALINA_OPTS%"-Xloggc:gc.log"setCATALINA_OPTS=%CATALINA_OPTS%"-Xmx512M"setCATALINA_OPTS=%CATALINA_OPTS%"-Xms512M"setCATALINA_OPTS=%CATALINA_OPTS%"-XX:PermSize=32M"setCATALINA_OPTS=%CATALINA_OPTS%"-XX:MaxPermSize=32M"setCATALINA_OPTS=%CATALINA_OPTS%"-XX:+DisableExplicitGC"//禁止GCsetCATALINA_OPTS=%CATALINA_OPTS%"-Xverify:none"//禁止JVM安全校验总结:

JVM调优的过程有:确定堆内存大小(-Xmx-Xms)、合理分配新生代和老年代(-XX:NewRatio、-Xm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论