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 }