JVM中GC参数

Demo:

package com.su.mybatis.oracle.controller;

import java.util.LinkedList;
import java.util.List;

public class Test {

    public static void main(String[] args) {
        List<byte[]> list  =new LinkedList<>();
        for(int i = 0; i<12; i++) {//触发一次Minor GC
            list.add(new byte[1024 * 1024]);
        }
        System.gc();//触发 Full GC
    }
}

 初始设置:

-Xmx40M -Xms40M -Xmn10M -XX:+PrintGCDetails

 未配置(默认情况)输出结果:

[GC[DefNew: 7880K->426K(9216K), 0.0066092 secs] 7880K->7594K(39936K), 0.0066656 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
[Full GC[Tenured: 7168K->12714K(30720K), 0.0071252 secs] 12967K->12714K(39936K), [Perm : 154K->154K(12288K)], 0.0071673 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

 -XX:+UseSerialGC:使用Serial+Serial Old进行垃圾回收;

输出结果:

[GC[DefNew: 7880K->426K(9216K), 0.0068026 secs] 7880K->7594K(39936K), 0.0068600 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
[Full GC[Tenured: 7168K->12714K(30720K), 0.0065880 secs] 12967K->12714K(39936K), [Perm : 154K->154K(12288K)], 0.0066274 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

 对比默认情况,说明单线程回收器为默认开启。

-XX:+UseParNewGC: 使用ParNew+Serial Old进行垃圾回收;

输出结果:

[GC[ParNew: 8004K->517K(9216K), 0.0037568 secs] 8004K->7685K(39936K), 0.0038107 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[Full GC[Tenured: 7168K->12792K(30720K), 0.0068715 secs] 13224K->12792K(39936K), [Perm : 1640K->1640K(12288K)], 0.0069113 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 

-XX:+UseParallelGC:使用Parallel Scavenge+Serial Old进行垃圾回收;

输出结果:

[GC [PSYoungGen: 6913K->1272K(8960K)] 6913K->6668K(39680K), 0.0044390 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC [PSYoungGen: 7808K->1272K(8960K)] 13205K->12820K(39680K), 0.0032042 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[Full GC [PSYoungGen: 1272K->0K(8960K)] [ParOldGen: 11548K->12792K(30720K)] 12820K->12792K(39680K) [PSPermGen: 1640K->1639K(12288K)], 0.0104641 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

-XX:+UseParallelOldGC:使用Parallel Scavenge + Parallel Old进行垃圾回收;

[GC [PSYoungGen: 6913K->1272K(8960K)] 6913K->6684K(39680K), 0.0042283 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC [PSYoungGen: 7808K->1272K(8960K)] 13221K->12832K(39680K), 0.0069219 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
[Full GC [PSYoungGen: 1272K->0K(8960K)] [ParOldGen: 11560K->12792K(30720K)] 12832K->12792K(39680K) [PSPermGen: 1640K->1639K(12288K)], 0.0104744 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

-XX:+UseConcMarkSweepGC:使用CMS进行垃圾回收;

[GC[ParNew: 8004K->520K(9216K), 0.0039692 secs] 8004K->7691K(39936K), 0.0040423 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[Full GC[CMS: 7170K->12792K(30720K), 0.0106636 secs] 13229K->12792K(39936K), [CMS Perm : 1640K->1639K(12288K)], 0.0107201 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

-XX:ParallelCMSThreads:配置CMS垃圾回收线程数;

-XX:CMSFullGCsBeforeCompaction(=N):CMS并发GC执行过后,出现N次full GC会做整理(CMS是标记清除算法)。默认是0,即默认情况下,CMS GC后内存不足,需要full GC的时就会进行整理。

 

 

如果有写的不对的地方,请大家多多批评指正,非常感谢!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值