关于jvm:七款经典垃圾回收器

12次阅读

共计 663 个字符,预计需要花费 2 分钟才能阅读完成。

Serial

Serial 是一款单线程的垃圾回收器,在进行垃圾回收的时候会产生 Stop the world。
对于其余垃圾收集器而言,他的内存占用是最小的。

ParNew

ParNew 实际上是 Serial 收集器的并行版本

Parallel Scavenge

重视吞吐量的垃圾收集器。
吞吐量 = 运行用户代码的工夫 /(垃圾回收的工夫 + 运行用户代码的工夫)
他有两个参数用于准确管制吞吐量大小:
-XX:MaxGCPauseMills: 管制垃圾回收的工夫
这个值并不是越小越好,咱们晓得,内存越小,进行垃圾回收的工夫就越短。如果咱们将这个值设置地较小,那么回收的内存局部也就小。这也就导致 gc 进行垃圾回收的频率也越高,这样吞吐量也就降落了。
-XX:GCTimeRatio: 垃圾回收工夫的比例
这个值默认是 99 . 也就是说 垃圾回收的工夫只占 1%(1/1+99)

Serial Old

是 serial 收集器的老年代版本
有两个用处

  • 在 jdk5 及之前的版本中与 Parallel Scavenge 收集器搭配应用
  • 在 cms 收集器产生失败的后备预案

Parallel Old

是 Parallel Scavenge 的老年代版本

CMS(Current Mark and Sweep)

真正意义上的并发收集器,第一次实现了让_垃圾_收集线程与用户线程 (基本上) 同时工作
整个过程能够分为四局部:

  • 初始标记
    扫描和 GCRoots 间接关联的对象,速度很快
  • 并发标记
    遍历整个对象图,工夫较长
  • 从新标记
    标记产生变动的那一部分对象的标记记录
  • 并发分明
    清标记阶段断定死亡的对象

毛病:

Garbage First

基于 region 的垃圾回收器

正文完
 0