温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-05-30 16:27:19 来源:网络 阅读:444 作者:爱与梦想 栏目:软件技术

1. 整体思路:

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

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


2. 使用的监控命令:

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

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

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


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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI