JVM原理之JVM调优

调优性能关注点
  1. * 吞吐量*:吞吐量是考察垃圾收集器重要的性能指标之一,指不考虑垃圾回收引起的停顿时间,应用程序能够支撑最大请求的指标。
  2. 延迟: 缩短垃圾收集引起的应用程序停顿时间,避免应用程序发生抖动。
  3. 内存占用:垃圾收集器流畅运行所需要的内存数量。
  4. 这三个指标一般很难保证同等重要,任何一个性能的提升都会以其中一个或者两个为代价。
基本命令行选项
  1. 开启GC日志,开启GC日志对生产应用性能影响比较小,某些情况下可以忽略不计。
  2. -XX:+PrintGCDetails -Xloggc:。该选项可以将指定将GC日志信息输出到记录名为fileName的文件中。
  3. –XX:+PrintGCApplicationStoppedTime用于调优响应时间/延迟较高的应用程序,可以帮助区分是否VM安全操作还是其他源头导致的停顿事件
  4. –XX:+PrintGCApplicationConcurrentTime 应用程序某一些时间超过性能要求,可以使用该参数帮助判断该程序是否在运行,运行了多长时间。
确定内存占用
  1. 活跃数据大小:应用程序长期稳定运行以后,长期存活的对象占用java堆内存量,即经过Full GC之后,java堆空间占用大小。
  2. 一般情况下设置参数如下:
    2.1. JAVA堆空间大小为进过多次Full GC之后,老年代存活的对象占用空间的4到5倍左右。-Xmx和-Xms空间大小设置相同大小。
    2.2. 新生代空间-Xmn大小设置为老年代存活对象占用空间的1.5倍到2倍大小。
    2.3. 永久大空间-XX:PermSize和-XX:MaxPermSize大小设置为老年代存活对象占用空间的1.5倍到2倍大小
  3. 在实际调优过程中,还需要考虑应用程序线程占用空间-xss大小,一般设置256K。线程请求数太多,反而压缩java堆空间的大小。
优化新生代空间
  1. 通常情况下,新生代空间越小,Minor GC的执行时间越短。因为空间越小,发生MinorGC的频率越高。
  2. 增加新生代空间的大小,发生MinorGC的频率降低,同时Minor GC的时间就越长。
  3. 在实际生产过程中,如果Minor GC的持续时间大于应用程序的延迟性要求,则就要减少新生代空间,适当增加MinorGC的频率。
  4. 减少新生代空间大小的同时,尽量保持老年代空间的大小不变,即缩减堆大小和新生代大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值