1 / 4
文档名称:

Java虚拟机的垃圾回收机制.docx

格式:docx   大小:60KB   页数:4页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Java虚拟机的垃圾回收机制.docx

上传人:zxwziyou8 2022/1/14 文件大小:60 KB

下载得到文件列表

Java虚拟机的垃圾回收机制.docx

相关文档

文档介绍

文档介绍:判断对象已死的方法:
1.       引用计数算法
给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1;任何时刻计数器值都为0时对象就表示它不可能被使用了。这个算法实现简单,但很难解决对象之判断对象已死的方法:
1.       引用计数算法
给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1;任何时刻计数器值都为0时对象就表示它不可能被使用了。这个算法实现简单,但很难解决对象之间循环引用的问题,因此Java并没有用这种算法!这是很多人都误解了的地方。
2.       根搜索算法
通过一系列名为“GC ROOT”的对象作为起始点,从这些结点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC ROOT没有任何引用链相连时,则证明这个对象是不可用的。如果对象在进行根搜索后发现没有与GC ROOT相连接的引用链,则会被第一次第标记,并看此对象是否需要执行finalize()方法(忘记finalize()这个方法吧,它可以被try-finally或其他方式代替的),当第二次被标记时,对象就会被回收。
 
引用分类:
1.       强引用(Strong Reference),类似“Object obj = newObject()”这类的引用,只要强引用还在,对象就永远不会被回收
2.       软引用(Soft Reference),描述一些还有用,但并非必须的对象(如缓存)。在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之中
3.       弱引用(Weak Reference),和软引用一样,但是强度更弱,被弱引用关联的对象只能生存到下一次垃圾回收之前
4.       虚引用(Phantom Reference),最弱的一种引用关系,虚引用和对象的生存周期没有任何关系,虚引用的唯一作用是在对象被回收时收到一个系统通知。
 
垃圾收集算法
1.        标记-清除算法
首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。它的缺点是:,标记和清除这两个过程效率都不高;,清除之后可能会产生大量的内存碎片,导致大对象无法找到一片连续的内存。
2.        复制算法
将可用内存分为大小相等的两块,每次只使用其中的一块。当一块的内存用完了,就将还活着的对象复制到另一块上,再把原本那块的内存一次性清理掉,这种算法的缺点是将原本的内存大小缩水了一半。一般用于Minor-GC,因为在新生代的对象98%都是朝生夕死的,所以不需要1:1的比例来划分内存,而是分成一块较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。当回收时,将Eden和Survivor中还存活的对象一次性拷到另外一块Survivor空间上,最后