目录

系列文章目录

前言

一、参数含义

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占用的时间,单位秒


总结

以上就是今天要讲的内容,本文仅仅简单介绍了虚拟机参数调优