千家信息网

JVM参数的配置说明

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关JVM参数的配置说明,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。堆设置-Xms: 初始堆大小-Xmx: 最大堆大小-XX:New
千家信息网最后更新 2026年11月02日JVM参数的配置说明

这期内容当中小编将会给大家带来有关JVM参数的配置说明,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

堆设置

-Xms: 初始堆大小-Xmx: 最大堆大小-XX:NewSize=n: 设置年轻代大小-XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4;如果设置了-Xmn则以-Xmn配置为准。-XX:SurvivorRatio=n: 年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5-XX:MaxPermSize=n: 设置持久代大小-XX:MaxTenuringThreshold=n: 设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。-XX:MetaspaceSize : 分配给类元数据空间(以字节计)的初始大小(Oracle 逻辑存储上的初始高水位,the initial high-water-mark)。此值为估计值,MetaspaceSize 的值设置的过大会延长垃圾回收时间。垃圾回收过后,引起下一次垃圾回收的类元数据空间的大小可能会变大。-XX:MaxMetaspaceSize :分配给类元数据空间的最大值,超过此值就会触发Full GC 。此值默认没有限制,但应取决于系统内存的大小,JVM 会动态地改变此值。

收集器设置

-XX:+UseSerialGC: 设置串行收集器-XX:+UseParallelGC: 设置并行收集器-XX:+UseParalledlOldGC: 设置并行年老代收集器-XX:+UseConcMarkSweepGC: 设置并发收集器

垃圾回收统计信息

-XX:+PrintGC: 输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs]-XX:+PrintGCDetails: 输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]-XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用 输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]-XX:+PrintGCApplicationConcurrentTime: 打印每次垃圾回收前,程序未中断的执行时间。可与上面混合使用。输出形式:Application time: 0.5291524 seconds-XX:+PrintGCApplicationStoppedTime: 打印垃圾回收期间程序暂停的时间。可与上面混合使用。输出形式:Total time for which application threads were stopped: 0.0468229 seconds-XX:PrintHeapAtGC: 打印GC前后的详细堆栈信息。

并行收集器设置

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

##并发收集器设置

-XX:+CMSIncrementalMode: 设置为增量模式。适用于单CPU情况。-XX:ParallelGCThreads=n: 设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

调优总结

年轻代大小选择

响应时间优先的应用: 尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。

吞吐量优先的应用: 尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。

年老代大小选择

响应时间优先的应用: 年老代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话率和会话持续时间等一些参数。如果堆设置小了,可能会造成内存碎片、高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间。最优化的方案,一般需要参考以下数据获得:

  1. 并发垃圾收集信息

  2. 持久代并发收集次数

  3. 传统GC信息

  4. 花在年轻代和年老代回收上的时间比例

减少年轻代和年老代花费的时间,一般会提高应用的效率

吞吐量优先的应用

一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代。原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象。

较小堆引起的碎片问题

因为年老代的并发收集器使用标记、清除算法,所以不会对堆进行压缩。当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象。但是,当堆空间较小时,运行一段时间以后,就会出现"碎片",如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记、清除方式进行回收。如果出现"碎片",可能需要进行如下配置:

  1. -XX:+UseCMSCompactAtFullCollection: 使用并发收集器时,开启对年老代的压缩。

  2. -XX:CMSFullGCsBeforeCompaction=0: 上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩

上述就是小编为大家分享的JVM参数的配置说明了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

时间 收集器 年轻 垃圾 大小 应用 对象 空间 配置 形式 输出 信息 情况 数据 碎片 参数 最大 两个 传统 吞吐量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 百单网互联网科技有限公司 蓝思科技飞鸽互联网 北京路客互联网科技有限公司 互联网是不是新科技 美国互联网科技巨头监管 互联网未来科技 互联网 视角下的科技创新 海南科技产业互联网平台 济南华为互联网科技产业总部基地 广州恒生互联网科技有限 燊美集互联网科技有限公司 合肥互联网科技公司公章图片 江苏苏星互联网科技有限公司 产业互联网科技服务公司 互联网科技数字货币 广东鹅鹅鹅互联网科技有限公司 杭州融税互联网科技有限公司 互联网科技品牌 互联网高科技绘画 广东万易互联网科技有限公司惠州分公司 博彦科技互联网金融 互联网科技工作委员会主任 鑫亿盛互联网科技 九亚互联网科技 互联网科技公司有风险吗 洛阳共同富裕互联网科技有限公司 沐思想互联网科技有限公司 互联网公司高科技产品 互联网金融运营模式中的金融科技
0