码迷,mamicode.com
首页 > 其他好文 > 详细

垃圾分代回收机制

时间:2018-09-09 18:04:37      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:垃圾回收   collect   垃圾回收器   完成   EAP   数据类型   过多   大小   对象   

针对的是堆内存。
Java中的每种数据类型大小都是确定的,所以所有的内存是由Java自己进行分配,意味着内存的管理和回收也是由JVM自己进行—在Java中一旦产生内存问题导致程序员无法处理。理论上在正常情况下Java中的堆内存是足够使用的 — 当堆内存使用的负荷量(一般情况下70%)超过一定限度的时候,会启动垃圾回收器(Garbage Collector — GC)进行堆内存的回收释放
Heap space
Young Generation
eden
survivor
from space
to space
Old Generation
扩展:eden:from:to = 8:1:1
对象刚创建的时候是先放入新生代中的伊甸园区;如果在伊甸园区经过一次回收依然存在,那么将这个对象挪到幸存区,在幸存区中经过多次回收这个对象依然存在则挪到老生代。在回收的时候先回收新生代,如果新生代回收之后的内存足够使用则不扫描老生代;如果不够则扫描老生代。老生代的扫描频率要低于新生代
发生在新生代的回收 — 初代回收 minor gc
发生在老生代的回收 — 完全回收 full gc
扩展:对象创建完成之后会先试图放入新生代;如果新生代经过回收之后也放不开,则直接试图将该对象放入老生代。老生代如果也放不开,则会出现错误 — OutOfMemoryError

 

垃圾分代回收机制

标签:垃圾回收   collect   垃圾回收器   完成   EAP   数据类型   过多   大小   对象   

原文地址:https://www.cnblogs.com/nanlinghan/p/9614021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!