1  文章讲解范围说明

     gc五花八门,范围特别广,此篇文章只讲解 spring boot + jdk 1.8 相关的gc知识

 2  spring boot + jdk 1.8  gc参数

       -XX:+UseParallelGC    

      虚拟机运行在Server模式下的默认值,使用Parallel Scavenge + Serial  Old ( PS MarkSweep ) 的收集器组合进行内存回收

 

1  gc分类

     新生代收集器,老年代回收器

 

2  新生代收集器 那些内存需要回收,什么时候回收,如何回收

   新生代收集器 使用的 Parallel Scavenge收集器

 

2.1  那些内存需要回收

         新生代无用对象

 2.2   什么时候回收

        当新生代存在无用对象时

 2.3   如何回收

      通过复制算法实现

      jvm将新生代划分成3分,分别是Eden,S0 ,S1 三份,划分比例为8:1:1,

     当回收时,将Eden 和 S中的一份复制到另外一个S份上,并且清除Eden和S中一份

    jvm  gc 发生时机及原理讲解_spring

 

      jvm  gc 发生时机及原理讲解_老年代_02

 

3  老年代收集器 那些内存需要回收,什么时候回收,如何回收

    老年代收集器使用的是Serial Old 收集器,使用标级-- 整理算法

3.1  那些内存需要回收

     老年代需要回收的对象

3.2   什么时候回收

       当老年代存在无用对象时

3.3   如何回收

     使用标记整理算法

jvm  gc 发生时机及原理讲解_内存回收_03