Java GC机制

JVM堆分为算法

  • 新域:存储全部新生成的对象(使用“中止-复制”算法进行清理)对象

    • 新生代内存分为2部分,1部分 Eden区较大,1部分Survivor比较小,
      • 并被划分为两个等量的部分。
  • 旧域:新域中的对象,
    • 通过了必定次数的GC循环后,
    • 被移入旧域(算法是标记-整理算法)
  • 永久域:存储类和方法对象,
    • 从配置的角度看,这个域是独立的,不包括在JVM堆内(方法区)。
    • 默认为4M。
  • 方法区(永久域): 
    • 永久域的回收有两种:
      • 常量池中的常量,无用的类信息,
      • 常量的回收很简单,没有引用了就能够被回收。
      • 对于无用的类进行回收,必须保证3点:
        • 类的全部实例都已经被回收
        • 加载类的ClassLoader已经被回收
        • 类对象的Class对象没有被引用(即没有经过反射引用该类的地方)
    • 永久代的回收并非必须的,能够经过参数来设置是否对类进行回收。

示例图:blog

相关文章
相关标签/搜索