个人博客:skyfffire.cn

Java内存释放——《Thinking in Java》随笔004

 1 package cn.skyfffire;
 2 
 3 /**
 4  * 
 5  * @author skyfffire
 6  *
 7  */
 8 public class Test {
 9     static boolean gcrun = false;        // GC是垃圾回收器
10     static boolean f = false;            // 终止创建对象的条件
11     static int created = 0;                // 对象个数计数器
12     static int finalized = 0;            // 对象销毁
13     int i;
14     
15     Test() {
16         i = ++created;
17         
18         if (created == 47) {
19             System.out.println("已经达到47个");
20         }
21     }
22     
23     protected void finalize() {
24         if (!gcrun) {
25             gcrun = true;
26             
27             System.out.println(created + "号对象创建完毕");
28         }
29         
30         if (i >= 47) {
31             System.out.println("47以上了");
32             
33             f = true;
34         }
35         
36         finalized++;
37         
38         if (finalized >= created) {
39             System.out.println("所有对象销毁完毕");
40         }
41     }
42 }
43 
44 class Garbage {
45     public static void main(String[] args) {
46         if (args.length == 0) {
47             System.err.println("请加上参数");
48             
49             return;
50         }
51         
52         while (!Test.f) {
53             new Test();
54         }
55         
56         System.out.println(Test.created + "---" + Test.finalized);
57         
58         if (args[0].equals("before")) {
59             System.out.println("gc");
60             System.gc();
61             System.out.println("runFinalization():");
62             System.runFinalization();
63         }
64 //        
65 //        if (args[0].equals("after")) {
66 ////            System.runFinalizersOnExit(false);
67 //        }
68     }
69 }

 

posted @ 2017-02-26 14:24  skyfffire  阅读(399)  评论(0编辑  收藏  举报
个人博客:skyfffire.cn