java vm参数设置_Java VM 启动参数详解

java vm参数设置_Java VM 启动参数详解JavaVM 启动参数详解 Date2017 05 24 打印输出相关参数 verbose 打印加载类的详细信息 verbose gc 打印虚拟机中 GC 的详细情况 显示最忙和最空闲收集行为发生的时间 收集前后的内存大小 收集需要的时间等 XX HeapDumpOnOu XX HeapDumpPath home admin logs java hprof 虚拟机在出现内

Java VM 启动参数详解

@Date 2017.05.24

打印输出相关参数-verbose打印加载类的详细信息-verbose:gc打印虚拟机中GC的详细情况:显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/admin/logs/java.hprof虚拟机在出现内存溢出异常时Dump 出当前的内存堆转储快照-XX:+TraceClassLoading打印加载类的详细信息-XX:+PrintGCDetails详细了解GC中的变化-XX:+PrintGCDateStamps了解垃圾收集发生的时间,自JVM启动以后以秒计量-Xloggc:/home/admin/logs/gc.logGC日志文件的路径

涉及堆相关的参数-serverserver模式下,新生代选择的是并行GC,旧生代选择的是并行GC

client模式下,新生代选择的是串行GC,旧生代选择的是串行GC-Xms2g堆的初始值2g-Xmx2g堆的最大值2g

PS:避免在运行时频繁调整Heap的大小,通常-Xms与-Xmx的值设成一样-XX:MinHeapFreeRation=空余堆内存小于MinHeapFreeRation时,JVM会增大Heap到-Xmx指定的大小-XX:MaxHeapFreeRation=空余堆内存大于MaxHeapFreeRation时,JVM会减小heap的大小到-Xms指定的大小-Xmn1g新生代堆大小1G-XX:SurvivorRatio=8默认32:1:1

新生代的Eden区:From区:To区的比例为8:1:1-XX:PermSize= (JDK7)永久代大小-XX:MaxPermSize= (JDK7)永久代MAX大小-XX:MetaspaceSize= (JDK8)代替PermSize,元空间大小-XX:MaxMetaspaceSize= (JDK8)代替MaxPermSize,元空间最大值

回收算法标记-清理直接清理

效率高

产生内存碎片标记-复制两块内存区域,S1,S2

不存在内存碎片

占用双倍空间标记-整理在标记-清理之后,让剩余存活的对象都向一端移动,并更新引用其对象的指针

效率低

不产生碎片分代收集算法把Java堆分新生代和老年代

在新生代用复制算法

在老年代用标记-清理或标记-整理算法

垃圾清理类型-XX:+UseSerialGCSerial GC

串行

使用简单的标记、清除、压缩方法对年轻代和年老代进行垃圾回收,即Minor GC和Major GC

适用于CPU配置较低,内存占用较少的单独Client应用模式-XX:+UseParallelGCParallel GC

并行

收集方式同Serial GC一样

产生N个线程来进行年轻代的垃圾收集

N默认=系统CPU核数-XX:ParallelGCThreads=设置Parallel GC线程数量-XX:+UseParallelOldGCParallel Old GC

方式同Parallel GC

主要是年轻代和年老代垃圾回收时都使用多线程收集-XX:+UseConcMarkSweepGC并发标记清除(CMS)收集器

短暂停顿并发收集器CMS-initial-mark:初始标记阶段(stop the world)

CMS-concurrent-mark : 和应用线程并发执行,标记可达的对象

CMS-concurrent-preclean(CMS-concurrent-preclean-start,CMS-concurrent-preclean) : 预清理(标记和应用线程是并发执行的,有些对象的状态在标记后会改变)

CMS-concurrent-abortable-preclean : 进一步的预清理,减少Rescan阶段时间.使用到参数(-XX:CMSMaxAbortablePrecleanTime)

Rescan阶段(stop the world) : 暂停应用线程,对对象进行重新扫描并标记

CMS-concurrent-sweep : 并发的垃圾清理

CMS-concurrent-reset : 下一次CMS GC重置相关数据结构

对年老代进行垃圾收集

年轻代使用的算法和Parallel一样

适用于不能忍受长时间停顿要求快速响应的应用

!!!FULL GCconcurrent-mode-failure : CMS GC时,有新的对象要进入年老代,但是年老代空间不足

promotion-failed : Young GC时,存活对象从Eden区到Survivor区,但是Survivor区空间不足,需要到年老代,年老代空间也不足

作者:voltric

链接:https://www.jianshu.com/p/674c3614ff34

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208391.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午11:42
下一篇 2026年3月19日 上午11:42


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号