垃圾回收
来源:互联网 发布:天然气物性计算软件 编辑:程序博客网 时间:2024/04/28 18:07
public class Gc {private static Gc a=null;private void info(){System.out.println("info()");}public static void main(String[] args) {new Gc();//System.gc(); 也可以Runtime.getRuntime().gc();a.info();}@Overrideprotected void finalize() throws Throwable {a=this;}}
结果:
在看下面这种情况:
public class Gc {private static Gc a=null;private void info(){System.out.println("info()");}public static void main(String[] args) {new Gc();//System.gc(); 也可以Runtime.getRuntime().gc();try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}a.info();}@Overrideprotected void finalize() throws Throwable {a=this;}}
结果:
为什么会出现这种情况呢?
程序中我们new了一个匿名对象,由于没有赋值给任何变量,所以该对象立即进入了可恢复状态,我们System.gc()后,垃圾回收器其实是不能立即进行回收,否则就会调用finalize方法;所以当我们调用了sleep后,垃圾回收器会受到程序的通知,因此开始进行垃圾回收,调用可恢复对象的finalize方法,让a指向匿名对象。
0 0
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- 垃圾回收
- Java中SimpleDateFormat的简要用法
- java排序和Comparable,Comparator两个接口区别
- 【BZOJ】【P1816】【Cqoi2010】【扑克牌】【题解】【水题】
- 手斧Linux – 从LFS到Funtoo (8)
- html5选择本地图片,显示图片名,类型,大小
- 垃圾回收
- boost bind 实现方法
- TCP和UDP区别
- html始终让元素居中显示,背景图铺满随便拖动不出界
- 《周鸿祎自述:我的互联网方法论》读书笔记
- 验证loadrunner对Ajax内容的校验
- 手斧Linux – 从LFS到Funtoo (9)
- WCF实现事件通知相关应用技巧介绍
- [000]陶陶摘苹果[EASY]