java虚拟机------垃圾回收

来源:互联网 发布:淘宝男装排行 编辑:程序博客网 时间:2024/05/06 02:57

1、引用计数法

给对象添加一个引用计数器,有一个地方引用他,计数器值就加1,当引用失效时,计数器就减1.计数器值为0的对象就不能再被使用。

但是该方法不能解决循环引用的问题~~

2、可达性分析算法

以“GC Roots”对象作为起点向下搜索,搜索走过的路径为引用连,当一个对象不能有该“GC Roots”出发到达时,就可以被GC回收。

有以下对象可以作为GC Roots:

   ①方法区静态属性引用的对象。

   ②方法区常量引用的对象。

   ③虚拟机栈中引用的对象

   ④本地方法栈中的JNI引用的对象。


3、引用

java1.2之后对引用概念进行了拓展。将引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference).

①强引用如:Object obj=new Object();  只要强引用还在,垃圾回收期永远不会回收被引用的对象。

②软引用:引用那些还有用但不是必须的对象,当内存不足时才会回收这些引用对应的对象。java使用SoftReference类实现。

③弱引用比软引用更弱一些。,他只能生存到下一次垃圾回收发生之前。不管内存是否足够,他对应的对象都会被回收。

④虚引用是最弱的引用。它的存在不会的对象的生命周期产生影响,也无法通过它来获得一个对象实例。唯一的作用就是是对象被回收是收到一个系统通知。

0 0
原创粉丝点击