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虚拟机会跟踪"标记-清扫"效果,要是堆空间出现很多碎片,就会切换到”停止-复制“;
在Java中,我们new完对象之后,垃圾回收器负责回收无用的对象占据的内存资源。java会自动帮我们回收垃圾,至于何时回收垃圾,我们不得而知了。
2.垃圾回收用到的方法
(1)finalize
该方法是用来回收特殊的,
(2)System.gc()
(3)java垃圾回收器工作
边空间,一边给堆中的对象从新排序,这种实现非常高速,而且是无限空间的可供分配的堆模型。
每个对象都会有一个引用计数器,当有引用连接这个对象时,这个计数器就+1
,当引用离开或变为null时 引用计数器就-1 当对象引用计数为0的时候,JVM就会将它回收,这种方法效率很低,因为需要在每个对象上加计数器,而且在对象循环引用时,可能出现已经没有引用但是计数还不为0的情况 ,效果不好。
(5)java垃圾回收器的工作机制:
java虚拟机采用一种自适应的垃圾回收技术:
停止-复制:先暂停程序,将所有当前堆的存活的对象都复制到另一个堆中,没有复制的就是垃圾,被复制到新堆中的对象的排列会很紧密。
标记-清扫:遍历所有引用,进而找出存活对象,每当找到一个存活对象,就对象,只有全部标记完之后才会开始清理垃圾。
Java虚拟机会跟踪"标记-清扫"效果,要是堆空间出现很多碎片,就会切换到”停止-复制“;
相关文章推荐
- 总结Java垃圾回收器的方法和原理
- 总结Java垃圾回收器的方法和原理
- Java垃圾回收器的方法和原理总结
- Servlet + Tomcat 中文乱码的原理和解决方法
- DoS攻击原理以及常见方法介绍(三)
- 细说暴库的原理与方法
- 两个将简体中文网页自动转为繁体中文网的页简单方法 (原理非常简单,尚不完善 IHttpHandler Proxy / Response.Filter)
- DoS攻击原理以及常见方法介绍(二)
- C#开发终端式短信的原理和方法
- C#开发终端式短信的原理和方法
- RunDll32 的使用方法与实现原理
- 一种快速的未登陆词识别方法(原理和实现)
- BT运行原理分析及内网提速方法(转)
- 一种快速的未登陆词识别方法(原理和实现)
- WinFile.exe病毒原理及解决方法
- C#开发终端式短信的原理和方法
- DoS攻击原理以及常见方法介绍(一)
- 由浅至深,谈谈.NET混淆原理 -- 五(MaxtoCode原理),六(其它保护方法)
- 拒绝服务***原理及解决方法详解