千家信息网

JVM调优经验(不一定准确)

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1. 整体思路:Young GC发生的频率比较频繁是正常现象,但尽可能让他的单次执行时间少点Full GC发生的频率不应该太高2. 使用的监控命令:jps -m -l 列出JVM中运行的进程状态信息(
千家信息网最后更新 2026年11月01日JVM调优经验(不一定准确)

1. 整体思路:

  1. Young GC发生的频率比较频繁是正常现象,但尽可能让他的单次执行时间少点

  2. Full GC发生的频率不应该太高


2. 使用的监控命令:

jps -m -l 列出JVM中运行的进程状态信息(这里可以获取某个进程的pid, 供后续命令使用)

jstat -gcutil pid 10s 3 对堆内存的使用情况、gc信息等进行实时的命令行统计


3. 具体设置参数如下:

  1. -Xms、-Xmx

    这两个参数一定要设置,而且必须设置成相等,不能使用默认值。如果不设置,可能会出现频繁Full GC、内存泄露。

    设置成相等,主要是为了避免每次GC之后重新给堆内存分配大小。

    另外,这俩值不要设置的太大。虽然建议堆的最大值设置为可用内存最大值的80%(使用命令free或cat /proc/meminfo查看,实际可用物理内存=free+buffer+cache),但是当设置了80%之后,服务器的内存占用一般都达到了90%以上,所以可以适当降低一点。

  2. -Xmn、-XX:SurvivorRatio

    最好不要用-XX:NewRatio,因为同CMS GC一起使用时会失效。

    如果不设置此值,不设置CMS GC,那么年轻代和年老代比值大约是1:2

    如果不设置此值,设置了CMS GC,那么年轻代会变的很小,年老大占很大

    如果Young Generation大小分配不合理或空间比较小,这个时候导致对象很容易进入Old Generation中,比如,如果s0和s1太小,gc之后无法装下存活的对象,那么就会直接进入年老代中,而Old Generation中回收具体对象的时候速度是远远低于Young Generation回收速度。

    要考虑年老代和新生代的比例(sun官方建议-Xmn为整个堆的3/8),考虑Eden和survives的比例(默认是8:1:1)

    如果不知道该设置多少,可以先按官方要求设置,如果不合适,再进行调整。

  3. 是否使用CMS GC。

  4. 其他参数,根据具体情况设置,注意,未必设置了之后就会提升性能。不同的应用系统,不同的电脑硬件条件,都可能不一样。

内存 命令 参数 对象 不同 年轻 最大 频繁 信息 大小 官方 建议 情况 时候 最大值 比例 进程 速度 频率 分配 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 美国互联网保险保险科技 互联网最新的科技有限公司 互联网 科技公司 期待互联网科技 未来的互联网科技 狮子座互联网科技有限公司 深圳卡尔迅互联网科技有限公司怎么样 华脉科技工业互联网产品 互联网科技实习生岗位职责 团飞科技与伯堂互联网服务平台 常德市电业局互联网科技部 开一家科技互联网公司需要多少钱 卓翼科技产业互联网合作 易企秀互联网科技是做什么的 福州德业互联网科技 同城互联网络科技 银川新华互联网科技学校招聘 知域互联网科技有限公司官网 前海云享互联网科技 湖南永感互联网科技有限公司 中正互联网科技招聘 湖南洣水互联网科技有限公司扣款 湖北码尼互联网科技有限公司电话 燊美集互联网科技有限公司 允成互联网科技有限公司融资 山东星卡互联网科技有限公司官网 广州燕处互联网科技有限公司 第三届互联网大会安防黑科技 中国主要互联网科技公司
0