-Xms -Xmx -Xss
参数 | 含义 | 默认值 | 说明 |
---|---|---|---|
-Xmx | 最大堆大小 | 物理内存的1/4(<1GB) | 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 |
-Xms | 初始堆大小 | 物理内存的1/64(<1GB) | 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制 |
-Xss | 每个线程的堆栈大小 | JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K |
说明:
- 一般初始堆和最大堆设置一样,因为:现在内存不是什么稀缺的资源,但是如果不一样,从初始堆到最大堆的过程会有一定的性能开销,所以一般设置为初始堆和最大堆一样
- 每个线程堆栈大小要根据应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。一般小的应用, 如果栈不是很深, 应该是128k够用的 大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试
持久代、新生代与老年代相关
参数 | 含义 | 默认值 | 说明 |
---|---|---|---|
-XX:MaxPermSize | 持久代最大值 | 物理内存的1/4 | |
-XX:PermSize | 持久代(perm gen)初始值 | 物理内存的1/64(<1GB) | |
-XX:NewSize | 新生代大小 | ||
-XX:MaxNewSize | 新生代最大值 | ||
-XX:NewRatio | 老年代大小与新生代大小的比例 | 2 | 举例:为2时表示新生代大小是老年代大小的1/3 |
-XX:SurvivorRatio | Eden 和 Survivor 大小的比例 | 8 |
说明:
- Eden和Survior的大小是按照比例设置的,如果SurvivorRatio为8,那么Survivor区域就是Eden的1/8大小,也就是新生代的1/10,因为YoungGen=Eden+2*Survivor
并行收集器相关参数
参数 | 含义 | 默认值 | 说明 |
---|---|---|---|
-XX:+UseParallelGC | 指 定在 New Generation 使用 parallel collector, 并行收集 , 暂停 app threads, 同时启动多个垃圾回收 thread, 不能和 CMS gc 一起使用 | UseParallelGC是jdk1.7选择parallel 回收器默认开启的。 | 系统吨吐量优先 , 但是会有较长时间的 app pause, 后台系统任务可以使用此 gc。 |
-XX:+UseParNewGC | 指定在 New Generation 使用 parallel collector, 是 UseParallelGC 的 gc 的升级版本 , 有更好的性能或者优点 , 可以和 CMS gc 一起使用 | UseParNewGC需要用户自己手动开启 | |
-XX:ParallelGCThreads | 并行收集器的线程数 | 此值最好配置与处理器数目相等 同样适用于CMS | |
-XX:+ScavengeBeforeFullGC | Full GC前调用YGC | true | |
-XX:+UseConcMarkSweepGC | 使用CMS内存收集 |
CMS相关参数
说明
1.什么是CMS?
CMS全称 Concurrent Mark Sweep,是一款并发的、使用标记-清除算法的垃圾回收器,如果老年代使用CMS垃圾回收器,需要添加虚拟机参数-”XX:+UseConcMarkSweepGC”。
使用场景:
GC过程短暂停,适合对时延要求较高的服务,用户线程不允许长时间的停顿。
缺点:
服务长时间运行,造成严重的内存碎片化。
参数 | 含义 | 默认值 | 说明 |
---|---|---|---|
-XX:+UseConcMarkSweepGC | 使用CMS内存收集 | ||
-XX+UseCMSCompactAtFullCollection | 在FULL GC的时候, 对年老代的压缩 | CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存不够用, 因此, 内存的压缩这个时候就会被启用。 增加这个参数是个好习惯。可能会影响性能,但是可以消除碎片 | |
-XX:CMSFullGCsBeforeCompaction | 多少次后进行内存压缩 | 由于并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生"碎片",使得运行效率降低.此值设置运行多少次GC以后对内存空间进行压缩,整理 | |
-XX:+UseCMSInitiatingOccupancyOnly | 使用手动定义初始化定义开始CMS收集 | 禁止hostspot自行触发CMS GC | |
-XX:CMSInitiatingOccupancyFraction | 老年代堆空间的使用率超过该值会触发CMS | ||
-XX:CMSInitiatingPermOccupancyFraction | Perm Gen使用率超过该值会触发CMS |
参考链接:
1.http://ifeve.com/useful-jvm-flags-part-7-cms-collector/
2.https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
网友评论