概述
java中对每一种类型都规定了具体的不可变的代销,所以所有的内存都是由JVM自动分配的,所有的内存的管理和回收都是由JVM自动进行的。对象的回收都是由垃圾收集器(GarbageCollwctor--GC)执行的。默认堆内存的使用率超过70%的时候,回启动GC。
栈内存的方法执行完后会自行出栈,方法区中的内存不回收,只有服务器关闭时才会回收,所以只有堆内存里面具有垃圾回收机制。
堆内存(heap space)结构如图所示:
堆内存分为两大区域 新生代和 老生代,新生代又分为伊匍园区和幸存者区,幸存者区又分为from区和to区。
1.当在堆内存开辟了一个空间后,它首先会在伊匍园区进行一次扫描,若扫描不通过,它就被回收了,若若扫描通过则它会进入幸存者区,在幸存者区他会进行多次扫描,若多次扫描后它仍然存在,则它会进入老生代,老生代的扫描频率会远远小于新生代。
2.如果对象创建之后在伊匍园区放不下,则会触发第一次初代回收(在新生代中),如果回收之后还是放不下,则会触发第二次初代回收。如果第二次初代回收还是放不下,则会直接当入老生代。如果放入失败,则会触发第一次完全回收,对象会再次试图放入新生代,如果还是失败,则触发第三次初代回收,回收之后试图放入新生代,如果放入失败,则再次试图放入老生代,如果放入失败,则触发第二次完全回收,则对象再次试图放入新生代,如果放不下,则试图放入老生代,如果还是失败抛出OutOfMemoryError.
最后
以上就是重要蜻蜓为你收集整理的java-----垃圾分代回收机制详解的全部内容,希望文章能够帮你解决java-----垃圾分代回收机制详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复