jvm常见参数设置

1.内存中常见的参数

  1. ‐XX:MaxTenuringThreshold
    设置新老年代晋升,最大值为15,并行收集器的默认值为15,CMS收集器的默认为6。

  2. ‐XX:PretenureSizeThreshold
    超过多大的对象直接在老年代分配,避免在新生代的Eden和S区不断复制

  3. ‐XX:+/‐ UseAdaptiveSizePolicy
    启用自适应生成大小调整。默认情况下启用此选项。当eden : s1 : s2 为
    8:1:1 时,这个参数启用后,实际上可能不是你设置的比例,会进行微调

  4. ‐XX:SurvivorRatio
    默认为8,也就是说Eden占新生代的8/10,From幸存区和To幸存区各占新生代的1/10

  5. ‐XX:ConcGCThreads
    设置用于并发GC的线程数。默认值取决于JVM可用的CPU数量。

  6. ‐Xsssize
    设置栈内存的大小,设置的栈的大小决定了函数调用的最大深度

  7. ‐Xms和‐Xmx
    初始化堆内存,和最大的堆内存,一般设置成一样大,内存的扩容涉及到内存的移动,开销更大

  8. ‐XX:ReservedCodeCacheSize
    设置JIT编译代码的代码缓存大小

2.G1垃圾收集器的常见参数

2.1 什么时候选择G1

  1. 50%以上的堆被存活对象占用
  2. 对象分配和晋升的速度变化非常大
  3. 垃圾回收时间比较长

2.2 常见参数

官网
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc_tuning.html#recommendat

2.3 建议

  1. 不要手动设置新生代和老年代的大小,只要设置整个堆的大小
    1).G1收集器在运行过程中,会自己调整新生代和老年代的大小
    2). 其实是通过adapt代的大小来调整对象晋升的速度和年龄,从而达到为收集器设置的暂停时间目标,如果手动设置了大小就意味着放弃 了G1的自动调优。

  2. 不断调优暂停时间目标
    1). 一般情况下这个值设置到100ms或者200ms都是可以的(不同情况下会不一样),但如果设置成50ms就不太合理。暂停时间设置的太短, 就会导致出现G1跟不上垃圾产生的速度。最终退化成Full GC。
    2). 所以对这个参数的调优是一个持续的过程,逐步调整到最佳状态。暂停时间只是一个目标,并不能总是得到满足。

  3. 使用-XX:ConcGCThreads=n来增加标记线程的数量

  4. 适当增加堆内存大小

  5. 不正常的Full GC
    有时候会发现系统刚刚启动的时候,就会发生一次Full GC,但是老年代空间比较充足,一般是由Metaspace区域引起的。可以通过Me taspaceSize适当增加其大家,比如256M。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值