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 }