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

垃圾收集器与内存分配策略

时间:2020-09-18 04:09:52      阅读:18      评论:0      收藏:0      [点我收藏+]

标签:解决   情况   垃圾   内存   方法   收集   分代   队列   queue   

1.垃圾收集(针对Java堆和方法区)

(1)判定对象存亡有2种算法,一是引用计数算法,二是可达性分析算法

(2)引用分类:强引用、软引用、弱引用、虚引用

(3)对象被回收过程:经历2次标记,第一次是可达性分析后没有与GC Roots相连,第2次判断对象是否有必要执行finalize()方法,如果对象没有覆盖finalize()方法,或finalize()方法已经被虚拟机调用过,那么虚拟机将这2种情况都视为没有必要执行。如果对象有必要执行finalize()方法,就会被加入F-Queue队列中,垃圾收集线程会扫描这个队列,并执行每一个对象的finalzie()方法,最后对队列中的对象进行第二次标记,如果对象在finalzie()方法中没有拯救自己,那么对象就会被垃圾收集器回收。

2.垃圾收集算法(所有算法都属于追踪式垃圾收集的范畴)

(1)分代收集理论:基于该理论将Java堆划分为不同的区域(新生代、老年代)。

(2)垃圾回收类型:根据垃圾收集器对不通区域的回收,回收类型分为Minor GC(新生代收集)、Major GC(老年代收集)、Full GC(堆和方法区收集)。

(3)根据不通区域的特点,有相应的算法:标记-清除算法、标记-复制算法、标记-整理算法。

(4)跨代引用解决:记忆集与卡表

 

垃圾收集器与内存分配策略

标签:解决   情况   垃圾   内存   方法   收集   分代   队列   queue   

原文地址:https://www.cnblogs.com/lilinjian/p/13684292.html

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