您的位置:首页 > 编程语言 > Java开发

java垃圾回收器的方法和原理

2016-11-28 18:44 148 查看
1.垃圾回收器只与内存有关

在Java中,我们new完对象之后,垃圾回收器负责回收无用的对象占据的内存资源。java会自动帮我们回收垃圾,至于何时回收垃圾,我们不得而知了。

2.垃圾回收用到的方法

(1)finalize

该方法是用来回收特殊的,

(2)System.gc()

(3)java垃圾回收器工作

边空间,一边给堆中的对象从新排序,这种实现非常高速,而且是无限空间的可供分配的堆模型。

每个对象都会有一个引用计数器,当有引用连接这个对象时,这个计数器就+1
,当引用离开或变为null时 引用计数器就-1 当对象引用计数为0的时候,JVM就会将它回收,这种方法效率很低,因为需要在每个对象上加计数器,而且在对象循环引用时,可能出现已经没有引用但是计数还不为0的情况 ,效果不好。

(5)java垃圾回收器的工作机制:

java虚拟机采用一种自适应的垃圾回收技术:

停止-复制:先暂停程序,将所有当前堆的存活的对象都复制到另一个堆中,没有复制的就是垃圾,被复制到新堆中的对象的排列会很紧密。

标记-清扫:遍历所有引用,进而找出存活对象,每当找到一个存活对象,就对象,只有全部标记完之后才会开始清理垃圾。

Java虚拟机会跟踪"标记-清扫"效果,要是堆空间出现很多碎片,就会切换到”停止-复制“;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: