暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
jvm垃圾回收.docx
124
22页
0次
2021-06-29
免费下载
深入理解
Java
垃圾回收机制
一:垃圾回收机制的意义
java
语言中一个显著的特点就是引入了
java
回收机制,是
c++
程序员最头疼的内存管
理的问题迎刃而解,它使得
java
程序员在编写程序的时候不在考虑内存管理。由于有个垃
圾回收机制,
java
中的额对象不在有“作用域”的概念,只有对象的引用才有“作用域”。垃
圾回收可以有效的防止内存泄露,有效的使用空闲的内存;
内存泄露:指该内存空间使用完毕后未回收,在不涉及复杂数据结构的一般情况下,
java
的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有是也将
其称为“对象游离”;
二:垃圾回收机制的算法
java
语言规范没有明确的说明
JVM
使用哪种垃圾回收算法,但是任何一种垃圾回收算法
一般要做两件基本事情:(
1
)发现无用的信息对象;(
2
)回收将无用对象占用的内存空
间。使该空间可被程序再次使用。
1
。引用计数法(
Reference Counting Collector
1.1:
算法分析:
引用计数算法是垃圾回收器中的早起策略,在这种方法中,堆中的每个对象实例都有
一个引用计数器,点一个对象被创建时,且该对象实例分配给一个变量,该变量计数设置
1
,当任何其他变量赋值为这个对象的引用时,计数加
1
,(
a=b
,则
b
引用的对象
实例计数器
+1
)但当一个对象实例的某个引用超过了生命周期或者被设置为一个新值时,
对象实例的引用计数器减
1
,任何引用计数器为
0
的对象实例可以当做垃圾收集。 当一个
对象的实例被垃圾收集是,它引用的任何对象实例的引用计数器减
1.
一、垃圾回收机制的意义
Java
语言中一个显著的特点就是引入了垃圾回收机制,使
c++
程序员最头疼的内存管理
的问题迎刃而解,它使得
Java
程序员在编写程序的时候不再需要考虑内存管理。由于有个
垃圾回收机制,
Java
中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃
圾回收可以有效的防止内存泄露,有效的使用空闲的内存。
ps:
内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,
Java
的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时
也将其称为“对象游离”。
二、垃圾回收机制中的算法
Java
语言规范没有明确地说明
JVM
使用哪种垃圾回收算法,但是任何一种垃圾回收算法
一般要做
2
件基本的事情:(
1
)发现无用信息对象;(
2
)回收被无用对象占用的内存空
间,使该空间可被程序再次使用。
1.
引用计数法
(Reference Counting Collector)
1.1
算法分析
引用计数是垃圾收集器中的早期策略。在这种方法中,堆中每个对象实例都有一个引用计
数。当一个对象被创建时,且将该对象实例分配给一个变量,该变量计数设置为
1
。当任
何其它变量被赋值为这个对象的引用时,计数加
1
a = b,
b
引用的对象实例的计数器
+1
),但当一个对象实例的某个引用超过了生命周期或者被设置为一个新值时,对象实例
的引用计数器减
1
。任何引用计数器为
0
的对象实例可以被当作垃圾收集。当一个对象实
例被垃圾收集时,它引用的任何对象实例的引用计数器减
1
1.2
优缺点
优点:
引用计数收集器可以很快的执行,交织在程序运行中。对程序需要不被长时间打断的实时
环境比较有利。
缺点:
无法检测出循环引用。如父对象有一个对子对象的引用,子对象反过来引用父对象。这样,
他们的引用计数永远不可能为
0.
1.3
引用计数算法无法解决循环引用问题,例如:
1
2
3
4
5
6
7
8
9
10
11
12
public class Main {
public static void main(String[] args) {
MyObject object1 = new MyObject();
MyObject object2 = new MyObject();
object1.object = object2;
object2.object = object1;
object1 = null;
object2 = null;
}
}
of 22
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜