码迷,mamicode.com
首页 > 编程语言 > 详细

Java垃圾回收机制的工作原理

时间:2016-09-28 22:50:55      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

Java垃圾回收机制的工作原理

【博主】高瑞林 

【博客地址】http://www.cnblogs.com/grl214 

一.Java中引入垃圾回收机制的作用

当我们建完类之后,创建对象的同时,进行内存空间的分配,为了防止内存空间爆满,java引入了垃圾回收机制,将不再引用的对象进行回收,释放内存,循环渐进,从而防止内存空间不被爆满。

1.垃圾回收机制的工作原理

创建的对象存储在堆里面,把堆比喻为院子中的土地,把对象比喻为土地的管理者,院子比喻为java虚拟机,当创建一个对象时,java虚拟机将给对象分配土地,当对象不再使用时,JVM进行释放。

引用计数:每个对象都包含一个计数器,当对象被引用时,计数器技术+1,当不被引用时-1,即为null;垃圾回收机制对其循环,当对象为null时,进行回收释放内存,虽然开销不是很大,但是在对象的整个生命周期垃圾回收机制进行循环工作,发现为null进行收回,但是有个缺陷,当对象出现循环引用时,本该回收的对象而计数器不显示0,所以垃圾回收机制也不回进行回收。

自适应技术:

停止—复制:暂停程序的运行,循环所有的对象找到“存活的”对象,将其复制到另一个堆里面,再将没有复制的进行回收,为了不占用存,引入在同一个堆里面,将没有占用的内存堆用来存放复制的“存活对象”,重新进行整理分配空间。为了防止出现没被引用的对象少,而花费开销复制了很多“存活对象”引入标记清扫,对对象进行循环标记引用的对象,复制到另一片堆里面,而不被引用的进行释放空间。最后JVM提供了自动检测监视,如果对象都很稳定,垃圾回收器效率低则使用“标记—清扫”,否则使用“停止—复制”,进行回收。

 

Java垃圾回收机制的工作原理

标签:

原文地址:http://www.cnblogs.com/grl214/p/5918022.html

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