JVM总结笔记

2 篇文章 0 订阅

JVM总结笔记

 

 

整个堆大小 = 新生代大小 + 年老代大小

新生代:Eden+From Survivor+To Survivor

 

 

收集器

使用的区域

采用的算法

单/多

特点

Serial

新生代

复制算法

暂停其他所有的工作线程,影响正常使用体验

ParNew

新生代

复制算法

暂停其他所有的工作线程,影响正常使用体验

Parallel Scavenge

新生代

复制算法

并行、多线程

达到一个可控制的吞吐量通过参数设置

CMS

老年代

标志-清除

并发

获取最短回收停顿时间为目标的收集器

Serial Old

老年代

标志-整理

Serial Old是Serial收集器的老年代版本

Parallel Old

老年代

标记-整理

多线程

Parallel Scavenge收集器的老年代版本

G1

整堆

标记-整理

并行、并发,分代收集、空间整合、可预测的停顿

面向服务端应用的垃圾收集器

表1 收集器汇总

 

 

算法汇总

  • 标志-清除算法
      1. 步骤:两次标志,回收
      2. 基于最基础的 可达性分析算法
      3. 优点:
      4. 缺点:
      5. 应用场景:针对老年代的CMS收集器;
  • 复制算法
      1. 步骤:
      2. 复制算法
      3. 优点:简单、高效
      4. 缺点:浪费内存空间
      5. 适用场景:新生代,因为新生代存活率低
      6. 收集器:如Serial收集器、ParNew收集器、Parallel Scavenge收集器、、G1(从局部看);
  • 标志-整理算法
      1. 步骤:先标志,再整理
      2. 算法:
      3. 优点:不会像复制算法,效率随对象存活率升高而变低
      4. 缺点:效率低
      5. 适用场景:老年代,因为老年代存活率高
      6. 收集器:Serial Old收集器、G1
  • 分代收集算法
      1. 步骤:
      2. 算法:
      3. 优点:
      4. 缺点:
      5. 适用场景:
      6. 收集器:

 

JVM常见配置参数

  • 堆设置

 

-Xms:2G 初始堆大小

-Xmx:2G 最大堆大小

-XX:NewSize=1G 设置年轻代大小

-XX:NewRatio=4 新生代:老年代 = 1:4 也就是新生代是总堆的20%

-XX:SurvivorRatio=4 eden是4, s0是1,s1 是1, 4:1:1。Eden区是新生代的80%

 

  • 收集器设置

 

-XX:+UseSerialGC 采用串行收集器

-XX:+UseParalleGC 采用并行收集器

-XX:+UseParalleOldGC 采用并行老年代收集器

-XX:+UseConcMarkSweepGC 采用并发收集器

 

三、调优原则:

1、年轻代大小的选择

响应时间优先的应用:尽可能大的年轻代

吞吐量优先的应用:尽可能大的年轻代

 

  1. 年老代大小的选择

响应时间优先的应用:小了、大了都不行,综合考虑

吞吐量优先的应用:一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代。原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象。

 

因为年老代的并发收集器使用标记、清除算法,所以不会对堆进行压缩。当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象。但是,当堆空间较小时,运行一段时间以后,就会出现“碎片”,如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记、清除方式进行回收。如果出现“碎片”,可能需要进行如下配置:

 

1. -XX:+UseCMSCompactAtFullCollection:使用并发收集器时,开启对年老代的压缩。

2. -XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值