Java垃圾分代机制

(1)Java中的所有数据类型的大小是固定的。

(2)Java中的内存管理交给JVM。JVM会自动对内存进行开辟和释放。

(3)对象的回收是由垃圾回收器(GC)执行的。当堆内存的使用率超过70%时,会自动开启GC。栈内存是用完即释放,方法区是只进不出。

(4)堆中内存区的划分,主要划分为新生代区和老生代区。而新生代区又被划分为伊甸园区和to区以及from区。

其中,新生代区与老生代区占比为1:2

伊甸园区:to区:from区 = 8 :1 :1

 

对象存放到堆中的过程

当创建一个对象时,先将对象存入新生代的伊甸园区,会经历一次扫描,扫描后如果对象依然存在,那么会将对象挪入幸存区。

在幸存区又经历多次扫描(大概是15次左右),如果对象依然存在,那么会从新生代挪入老生代,老生代的扫描频率远远低于新

生代。

 

如果存入的对象占用内存过于膨大的话,jvm是如何工作的

先尝试将对象存入伊甸园区,如果放不下,那么就会扫描新生代(伊甸园、to、from区),经历第一次的初代回收,然后再次尝

试将对象存入,如果还是放不下,那么再扫描一次新生代,经历第二次的初代回收,如果还是放不下,那么会扫描老生代,经历

第一次完全回收,如果放不下,再次扫描新生代,经历第三次的初代回收,如果放不下,那么扫描老生代,经历第二次的完全回

,如果还是放不下,那么抛出错误,程序停止。

三次初代回收,两次完全回收

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值