0
点赞
收藏
分享

微信扫一扫

【Java性能调优指南】Garbage First垃圾收集器1

前言

很简单!Garbage First(G1垃圾收集器)本文主要内容,当然一篇文章是讲不完的,而且涉及HotSpot VM,就忍不住想:为什么G1作为一个垃圾收集器会被开发出来?并被包含到HotSpot VM中?

正文

我们熟悉基本的垃圾收集概念,诸如年轻代、老年代以及压缩。

1999年,串行GC第一个被引入HotSpot的垃圾收集器,并作为JDK1.3.1的组成部分。 2002年,并行GC并发标记清除(CMS)GC被引人JDK1.4.2。这3种垃圾收集器基本覆盖了GC最重要的3种使用场景:

1内存占用空间以及并发开销最小化

2应用吞吐量最大化

3GC相关中断时间最小化

接下来就引出了一个好问题:“为什么还需要一个新的垃圾收集器?比如G1“。讲这个之前,看样子需要先简述一下:并行、stop-the-world、并发。因为实在理解困难,造孽了~

并行

并行:多线程的垃圾收集运算

不知道哪一本书看到的话,感觉简洁不废话,挺好的!当一个垃圾收集事件活动被描述为并行,就意味着它正用多线程来执行当一个垃圾收集器被描述为并行,就意味着它是用多线程来执行垃圾收集

简单点一下:就HotSpot的垃圾收集器而言,几乎所有多线程GC操作都由JAVA VM(JVM)的内部线程处理。与此相比,一个很重要的例外就是G1垃圾收集器,在G1中某些后台的垃圾收集工作能够由应用线程来承担。


stop-the-world

stop-the-world:在一个垃圾收集事件中,所有的Java应用线程全部被暂停

一个stop-the-world垃圾收集器,就意味着,当它执行垃圾收集操作时,会停掉所有JAVA应用线程(当一个垃圾收集阶段或事件被描述为stop-the-world,也就意味着在这个特定的垃圾收集阶段或事件中,所有JAVA用线程都会被暂停。)重复了两遍,因为实在不知道哪一句更容易懂。


并发

并发:在JAVA应用执行过程中,垃圾收集活动也同时在进行

一个并发垃圾收集阶段或事件,意味着这个垃圾收集阶段或事件可以和应用在同一时间执行。

举报

相关推荐

0 条评论