minor gc 和 full gc

JAVA中关于GC的分析中,需要搞清楚,GC线程在什么时候,对什么东西,做了什么操作。

1-在什么时候

  首先需要知道,GC分为minor GC和full GC,JAVA内存分为新生代和老年代,新生代中又分为1个Eden区(使用区)和2个survivor区(保留区)。

  minor GC的触发条件: 如果新生代中Eden区没有足够的内存空间,那么就会触发minor GC。

  full GC的触发条件:如果老年代内存区没有足够内存,那么就会触发full GC。

2-对什么东西

  JAVA使用根搜索算法(GC Roots Tracing)判断对象是否存活着。这个算法的基本思路就是:通过一系列名为"GC Roots"对象作为起始点,

  从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链时,则证明此对象没有被引用。

3-做什么操作

  做清理对象,整理内存的操作。

原文地址:https://www.cnblogs.com/wry13172/p/6287306.html