我是靠谱客的博主 称心仙人掌,这篇文章主要介绍垃圾回收原理和算法,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
**内存管理** Java的内存管理很大程度指的就是对象的管理,其中包括对象空间的分配和释放。 对象空间的分配:使用new关键字创建对象即可。 对象空间的释放:将对象赋值null即可。垃圾回收器将负责回收所有“不可达”对象的内存空间。 **垃圾回收过程** 任何一种垃圾回收算法一般要做两件基本事情: 1、发现无用的对象 2、回收无用对象占用的内存空间。 垃圾回收机制保证可以将“无用的对象”进行回收。无用的对象指的就是没有任何变量引用该对象。 Java的垃圾回收器通过相关算法发现无用对象,并进行清除和整理。 **垃圾回收相关算法** 1、引用计数法 堆中每个对象都有一个引用计数。被引用一次,计数加1,被引用变量值变为null,则计数减1,直到计数为0, 则表示变成无用对象。优点是算法简单,缺点是“循环引用的无用对象”无法识别。 例如: public class Student{ String name; Student friend; public static void main(String[ ] args){ Student s1 = new Student(); Student s2 = new Student(); s1.friend = s2; s2.friend = s1; s1 = null; s2 = null; } } s1和s2相互引用对方,导致他们引用计数不为0,但是实际已经无用,但无法被识别。 2、引用可达法(根搜索算法) 程序把所有的引用关系看作一张图,从一个节点GC ROOT开始,寻找对应的引用节点,找到这个节点以后, 继续寻找这个节点的引用节点,当所有的引用节点寻找完毕之后,剩余的节点则被认为是没有被引用的节点, 即无用的节点。

最后

以上就是称心仙人掌最近收集整理的关于垃圾回收原理和算法的全部内容,更多相关垃圾回收原理和算法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部