JVM 调优 一些原则

本文探讨了GC优化的两大目标:最小化进入老年代的对象数量和缩短FullGC执行时间。详细解析了如何通过调整新生代大小来平衡GC频率与执行时间,避免超时错误和内存溢出。
  1. GC优化的两个目的:

    1) 将进入老年代的对象数量降到最低
    
        基本都是分代GC,就是对象在Eden区被创建,随后被转移到Survivor区,在此之后剩余的对象会被转入
    老年代。也有一些对象由于占用内存过大,在Eden区被创建后会直接被传入老年代。老年代GC相对来说会
    比新生代GC更耗时,因此,减少进入老年代的对象数量可以显著降低Full GC的频率。
    你可能会以为减少进入老年代的对象数量意味着把它们留在新生代,事实正好相反,新生代内存的大小是可以调节的。
    
    2) 减少Full GC的执行时间
       
       FullGC的执行时间比MinorGC要长很多,因此如果在FullGC上花费过久(超过1s),将可能出现超时错误。
    
    如果通过减小老年代内存来减少Full GC时间,可能会引起OutOfMemoryError或者导致Full GC的频率升高
    如果通过增加老年代内存来降低Full GC的频率,Full GC的时间可能因此增加
    所以要不停的调节老年代大小,使得两者兼顾 (减少时间和减少频率)

     

  2. 永久代内存大小   一般不需要去调节,注意的时如果有很多类加载器的话,会预先分配给每个加载器独立的空间,可能导致永久代还未满,但是出现了outofmemory

  3. 大内存空间
        减少了GC的次数
        提高了GC的运行时间
    小内存空间
        增多了GC的次数
        降低了GC的运行时间

     

  4. 设置新生代大小

修改参数:NewRatio

NewRatio:2 ----》 Minor GC   40ms

NewRatio:3 ----》 Minor GC   34ms

NewRatio:4  ----》 Minor GC   30ms

当修改为 4时,则GC时长最短,并且不会再出现FullGc

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值