目录
系列文章目录
前言
一、参数含义
1 堆内存参数设置
2 垃圾回收参数设置
3 GC日志分析
总结
前言
Java虚拟机的参数调优,决定了是否合理的利用了现有机器的内存空间,程序运行时是否合理的占用和释放内存,避免虚拟机内存溢出,如何设置合理的参数非常重要。
一、参数含义
1 堆内存参数设置
必须依据机器的核数和内存
比如:4c8g机器
-Xms 4096M:JVM启动初始化堆大小为4g,建议取内存的一半,充分利用内存。
-Xmx 4096M:JVM最大的堆大小为2g,将-Xms和-Xmx的值配置为一样,可以避免每次垃圾回收完成后对JVM堆大小进行重新的调整。
-Xmn 512M:堆中的新生代大小为512M
-Xss 128K:每个线程的堆栈大小为128K
比如:2c2g机器
-Xms 1024M -Xmx 1024M -Xmn512M -Xss128K
2 垃圾回收参数设置
需要依据应用是否高并发来制定
2.1 高并发应用的参数建议
分析:1)需要快速响应,允许频繁回收,但保持回收停顿时间少
2)并发的垃圾回收算法,复制+标记清理
3)机器内存和cpu足够
推荐:CMS垃圾回收器
参数配置:
-XX:+UseConcMarkSweepGC 表示:启用CMS
-XX:CMSInitiatingOccupancyFraction=70 表示:内存占用70%时触发GC
-XX:+UseCMSInitiatingOccupancyOnly 表示:一直使用CMSInitiatingOccupancyFraction=70
高并发量特别高的时候,垃圾对象产生过多
建议设置-XX:CMSInitiatingOccupancyFraction=30 提高GC的频率
3 GC日志分析
各参数表示的含义
1)第一个参数:发生GC的时间
2)这次垃圾收集的停顿类型,不是来区分新生代GC或老年代GC的
新生代收集器也会出现Full GC,一般是由于分配担保失败导致的
3)后面表示发生GC的区域,根据垃圾收集器的不同而名称不同
4)Gc前内存占用->GC后内存占用(Java堆总容量)
5)GC占用的时间,单位秒
总结
以上就是今天要讲的内容,本文仅仅简单介绍了虚拟机参数调优