GC调优

作者: 在路上很久了 | 来源:发表于2018-09-06 10:03 被阅读0次

https://blog.csdn.net/u011750989/article/details/50253845

是否需要进行GC调优

决定是否进行Java GC调优,前提是主要看新生代的Minor GC和老年代的FULL GC 的GC频率和每次GC停顿的时间对于业务来说是否可接受,一般满足以下条件,可不用考虑GC调优(仅参考,具体还要看业务)

1      MinorGC执行的很快(小于50ms)

2      MinorGC执行的并不频繁(大概10秒一次)

3      FullGC执行的很快(小于1s)

4      FullGC执行的并不频繁(10分钟一次)

如何监控

1、启动时指定参数,打印出日志

-Xloggc:/var/log/hadoop-hdfs/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps

2、使用命令行

jstat -gc 26990 1000 10(每秒展示一次,总共展示10次,内存各区使用情况及总的GC情况)

//查看内存实际使用类,对象

jmap -heap25856(在CMS GC的情况下可能造成进程挂起,查看内存各区域used,free情况,以及内存参数配置,执行很快)

jmap -histo -F4191(能查到在内存里哪些类,类有多少实例,占多少空间,注意使用该命令时,比较慢,进程暂停对外工作)

jmap –dump:format=b,file=test.bin3500//生成dump文件,可再用visualvm可视化分析?在java bin目录下有jvisualvm,若无响应指定-F,用jhat分析dump文件功能比较弱, -dump:[live,]format=blive指定只输出活的对象到文件

//查看虚拟机内部线程

jstack -l -F22595(注意执行比较慢)

//查看jvm显示指定的参数和隐式的默认参数

Jps –v//查看各个进程的显示参数

Jinfo –flagCMSInitiatingOccupancyFractionpid(查看某个进程某个参数值)

如何调优

目前调优主要还是针对JVM参数进行调整,针对自己的业务考虑

1、选择哪种垃圾收集器

比较成熟使用较多的是parallel gc 、CMS gc,尤其CMS GC停顿时间较短,实际使用更为常见,而G1 GC停顿时间更短,也没有CMS GC内存碎片问题,但是稳定性还未可知,并且占用内存会更多,所以目前阶段只是不是GC出现严重问题,一般不选择G1 GC

2、怎么调整参数

比较重要的是针对新生代和老年代的空间分配大小找个折中点, 如果发现FULL GC执行频率能接受,但是一旦GC发行停顿时间很长,可适当减小老年代的空间大小,相反执行频率过快,单次停顿较短,是否该考虑调大老年代空间,新生代同理

如果使用的是CMS GC垃圾收集器,会产生内存碎片问题,可设置多少次FULL GC以后进行一次碎片整理

3、应用层去调优减少不必要的对象生成,或者启用多个JVM实例,避免单个JVM实例大内存GC问题

相关文章

  • JVM-GC调优

    零、本文纲要 一、 GC调优基本思路二、 新生代内存调优三、 老年代内存调优四、 GC调优案例 官方GC调优指南[...

  • 第二十九章、GC调优思路

    以G1 GC 为例,谈谈GC调优思路? 谈到调优,这一定是针对特定场景、特定目的的事情,对于GC调优来说,首先...

  • JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC ...

  • Java架构师面试题——JVM性能调优

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC ...

  • java-GC分析

    主要关注点: GC日志分析 调优命令 调优工具 GC日志分析 摘录GC日志一部分(前段为年轻代gc回收;后段为fu...

  • JVM GC调优入门

    JVM GC调优入门 这篇文章会介绍几个常用的调优参数,再通过两个案例介绍如何进行JVM GC调优。阅读这篇文章的...

  • 使用GCViewer调优GC

    在对 GC 调优的过程中,我们不仅需要知道 GC 的原理,更重要的是要熟练使用各种监控和分析工具,具备 GC 调优...

  • Java GC调优

    1.GC调优是针对特定的场景,特定目的来说。对于GC调优来说,首先要搞清楚调优的目标是什么?从性能的角度来看,我们...

  • troubleshoot之:GC调优到底是什么

    简介 我们经常会听到甚至需要自己动手去做GC调优。那么GC调优的目的到底是什么呢?让程序跑得更快?让GC消耗更少的...

  • gc调优我们到底在调整什么

    java开发一般都会涉及到jvm调优,其中gc调优是个重点项。那gc调优调整的究竟是什么呢?准确来说是业务。下面围...

网友评论

      本文标题:GC调优

      本文链接:https://www.haomeiwen.com/subject/cqvtgftx.html