GC调优记录(一)

1、学习记录

a、垃圾确认算法

**引用计数(referenc count)**--- 记录指向对象引用的数量,缺点:循环引用垃圾无法判断。
**根可达算法(root searching)**--- 根对象不可达对象即为垃圾。一个具有注脚的文本。

根对象1

b、垃圾回收算法

mark-sweep、copying、mark-compact

c、垃圾回收器

目前存在的垃圾回收器包括:
有物理分区:young区使用(serial 、parNew、parallel scavenge)、old区使用(CMS、serial old 、parallel old)
无物理分区,存在yonge.old逻辑分区:G1
无物理分区,无逻辑分区:ZGC、shenandoah
	windows使用命令查看垃圾回收器:java -XX:+PrintCommandLineFlags -version
	jdk8默认ps+po(parallel scavenge + parallel old)
	jdk9-jdk13默认G1

d、体会

垃圾回收算法沿着计算机内存,算力的发展,由初代支持单线程垃圾回收(serial 、
serial old)---->发展为并行(parallel scavenge 等) --->发展为并发(CMS)。
同时在优化过程中对于yong (enden ,survivor survivor),old区的物理分区.、逻辑分区同时存在,
到G1的只存在逻辑分区(主要分块region,每个region在不同时间条件可能是不同的逻辑类型,如:eden、old等),再往后发展,也会淡化逻辑分区的概念。

2、垃圾回收器参数记录

a、GC常用参数

  • -Xmn -Xms -Xmx -Xss
    年轻代 最小堆 最大堆 栈空间
  • -XX:+DisableExplictGC
    禁用System.gc() (使用此命令为FGC)
  • -XX:+PrintGC
  • -XX:+PrintGCDetails
  • -XX:+PrintHeapAtGC
  • -XX:+PrintGCTimeStamps
  • -verbose:class
    类加载详细过程
  • -XX:+PrintVMOptions
  • -XX:+PrintFlagsFinal -XX:+PrintFlagsInitial
    最终使用参数值,初始化参数值(所有)
  • -Xloggc:opt/log/gc.log
  • 设置gc日志
  • -XX:MaxTenuringThreshold
    升代年龄,最大值15

b、CMS常用参数

  • -XX:+UseConcMarkSweepGC 开启CMS垃圾回收器
  • -XX:ParallelCMSThreads
    CMS线程数量
  • -XX:CMSInitiatingOccupancyFraction
    使用多少比例的老年代后开始CMS收集,默认是68%(近似值,jdk8本地测试,大约62%)

c、G1常用参数

  • -XX:+UseG1GC 开启G1垃圾回收器
  • -XX:+G1HeapRegionSize
    分区大小,建议逐渐增大该值,1 2 4 8 16 32。
    size大小的设置需平衡,过大过小均由缺点
  • G1NewSizePercent
    新生代最小比例,默认为5%
  • G1MaxNewSizePercent
    新生代最大比例,默认为60%
  • GCTimeRatio
    GC时间建议比例,G1会根据这个值调整堆空间
  • ConcGCThreads
    线程数量
  • InitiatingHeapOccupancyPercent
    启动G1的堆空间占用比例

  1. 根对象包括:JVM stack ,native method stack,runtime constant pool,static reference in method area,Clazz ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值