JVM--垃圾收集算法
来源:互联网 发布:js去除字符串中的符号 编辑:程序博客网 时间:2024/05/18 04:00
一、如何判断对象是否存活?
在通常情况下,如果我们被问到如何判断一个对象是否存活这个问题的时候,我们通常会想到引用计数算法,那么除了引用计数算法之外还有没有其他的算法呢?当然,而且就目前来说引用计数算法用得并不是很多。
(1)引用计数算法
引用计数算法需要给对象添加一个技术器,当指向对象的引用增加的时候,相应对象的引用计数器就加一,当垃圾回收开始的时候,判断对象的引用计数器的值是否为0,如果为0就将对象回收掉。当然我们会发现针对循环引用的情况,引用计数器就歇菜了。那么有没有办法可以解决循环引用的问题呢?当然,这就是我们下面要说到的可达性分析算法。
(2)可达性分析算法
在可达性分析算法中有一个很重要的东西“GC Roots”,当我们从GC Roots到一个对象所走过的路径称为引用链,当没有到达对象的引用链的时候,这个对象就可以被回收掉了。
可以作为GC Roots的对象包括以下几个对象:
虚拟机栈中引用的对象。
方法区中类的静态属性引用的对象。
方法区中常量引用的对象。
二、垃圾收集算法
(1)标记-清除算法
首先标记出需要被清除的对象,然后在对象回收的时候,针对被标记的对象进行统一地垃圾回收。这个算法有一个缺点就是会造成内存中有很多分散的内存块。这样一来针对比较大的对象的存储就会面临着内存不够的问题。
(2)复制算法
复制算法通常会把内存分成两个区域,使用其中的一个区域,当进行垃圾收集的时候将存活的对象复制到另一个空的区域,然后将当前区域进行回收,这样就不会造成零碎的内存空间。
(3)标记-整理算法
标记整理算法是将存活的对象移向一边,然后回收另一边即可。这个算法和标记-清除算法有点类似,但是不同的是这个算法有个移动的过程。
- JVM垃圾收集算法
- JVM垃圾收集算法
- [JVM]垃圾收集算法
- JVM 垃圾收集算法
- JVM > 垃圾收集算法
- JVM垃圾收集算法
- JVM垃圾收集算法
- JVM垃圾收集算法
- jvm垃圾收集算法
- jvm垃圾收集算法
- jvm垃圾收集算法
- JVM垃圾收集算法
- Jvm垃圾收集算法
- JVM垃圾收集算法
- jvm垃圾收集算法
- jvm垃圾收集算法
- jvm垃圾收集算法
- JVM--垃圾收集算法
- 一个组件的识别和开发过程(持续更新)
- 评价成绩
- 5-1 继承与派生
- 学习资源地址汇总
- C++实验二
- JVM--垃圾收集算法
- Marriage Match IV HDU
- 鲍捷 | 知识图谱从 0 级到 10 级简化版
- 关于 点亮8*8LED点阵(24脚)的爱心教程
- CstringArray error C2248: 'CObject::CObject' : cannot access private member declared in class
- Xcode9学习笔记81
- Python 爬虫的工具列表
- 3-5 学生成绩统计
- sed 和 awk