Java GC机制

JVM堆分为

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

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

示例图:

269586ec6e92fff3165b96dfcefe246e2b2.jpg

转载于:https://my.oschina.net/u/3847203/blog/3015083

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值