java读书笔记---垃圾回收

来源:互联网 发布:ubuntu怎么启动selinux 编辑:程序博客网 时间:2024/06/03 19:24

1. 如何判定一个类是无用的类

  1. 该类的所有实例被回收,意思就是java堆中不存在该类的任何实例。
  2. 加载该类的ClassLoader已经被回收
  3. 该类对用的java.long.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。

2. 垃圾回收算法

1.标记-清除方法

标记需要回收的对象,直接清除对象所对应的的内存区域。

这里写图片描述

2.复制算法

复制不需要回收的内存块到另一块内存中,清除当前块的内容。如下图

这里写图片描述

3.标记整理算法

标记需要回收的对象的内存块,清除掉之后,把剩余的内存块依次按照一个方向排列,如下图

这里写图片描述

4.分代收集算法

当前商业虚拟机使用的都是分代收集方法 一般分为eden区,from - to Survivor区,老年代

eden(伊甸)区一般是新的对象存活的位置

from区与to区是两块大小相同的内存块,在垃圾回收的时候eden区和from中存活的对象会复制到to区。然后清除掉eden区和from区。并且from将会为to区,to为from区。

老年代存放的是经过多次垃圾回收存放下的对象,一般不会回收老年代的对象。

0 0
原创粉丝点击