Minor GC vs Major GC vs Full GC

http://www.importnew.com/15820.html

https://plumbr.io/blog/garbage-collection/minor-gc-vs-major-gc-vs-full-gc

 

  • Minor GC 会清理年轻代的内存。
  • Major GC 是清理老年代的内存。
  • Full GC 是清理整个堆空间—包括年轻代和老年代。
  • 所有的 Minor GC 都会触发“全世界的暂停(stop-the-world)”
  • 许多 Major GC 是由 Minor GC 触发的,所以很多情况下将这两种 GC 分离是不太可能的。

结论:MinorGC也会出触发STW发生。

 

扩展阅读:

https://stackoverflow.com/questions/16695874/why-does-the-jvm-full-gc-need-to-stop-the-world

涉及到:GC algrogithm

以及RedHat(OpenJDK)和Oracle(HotSpot)的实现。

 

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/cms.html#concurrent_mark_sweep_cms_collector

针对Java8的CMS垃圾收集器,其中有如下的一句:

(in particular, the application threads are stopped during minor collections).

特定情况下,当执行Minor Gabage Collection时,应用的线程被停止。(也就是说,Minor GC会出发Stop-The-World)。

 

posted @ 2018-05-31 18:08  任国强  阅读(238)  评论(0编辑  收藏  举报