📄 ex_5_3_1.java
字号:
/*
*文件名:ex_5_3_1.java
*说 明:垃圾回收机制举例
*/
// Chair类
class Chair {
static boolean gcrun = false;
static boolean f = false;
static int created = 0;
static int finalized = 0;
int i;
Chair() {
i = ++created;
if(created == 47)
System.out.println("Created 47");
}
public void finalize() {
if(!gcrun) {
//第一次调用finalize()方法
gcrun = true;
System.out.println(
"在" +
created + "个Chair对象创建之后开始调用finalize()方法");
}
if(i == 47) {
System.out.println(
"finalize() #47, " +
"正在设置创建终止信号");
f = true;
}
finalized++;
if(finalized >= created)
System.out.println(
"所有" + finalized + " 个Chair对象都被清除掉");
}
}
// 主类
public class ex_5_3_1 {
public static void main(String[] args) {
// 如果f没有被设置,则创建Chairs对象和字符串对象
while(!Chair.f) {
new Chair();
new String("To take up space");
}
System.out.println(
"Chair对象被创建结束:\n" +
"总数为 " + Chair.created +
", 调用finalize()次数为 " + Chair.finalized);
// GC选项
if(args.length > 0) {
if(args[0].equals("gc") ||
args[0].equals("all")) {
System.out.println("gc():");
System.gc();
}
if(args[0].equals("finalize") ||
args[0].equals("all")) {
System.out.println("runFinalization():");
System.runFinalization();
}
}
System.out.println("bye!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -