public class FinalizationDemo {
public static void main(String[] args) {
Cake c1 = new Cake(1);
Cake c2 = new Cake(2);
Cake c3 = new Cake(3);
c2 = c3 = null;
// System.gc(); //Invoke the Java garbage collector
Runtime.getRuntime().gc();
}
}
class Cake extends Object {
private int id;
public Cake(int id) {
this.id = id;
System.out.println("Cake Object " + id + "is created");
}
protected void finalize() throws java.lang.Throwable {
super.finalize();
System.out.println("Cake Object " + id + "is disposed");
}
}
结果:
Cake Object 1is created
Cake Object 2is created
Cake Object 3is created
Cake Object 3is disposed
Cake Object 2is disposed
Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
System.gc()和Runtime.gc() 提示jvm进行回收,具体回收时间还是要看jvm
java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的简写,两者的行为没有任何不同。只是前者写的要简单点
转自:http://blog.csdn.net/carolzhang8406/article/details/6705831
分享到:
相关推荐
"前端项目-css3finalize.zip" 这个标题表明这是一个关于前端开发的项目,主要聚焦在CSS3的应用。"css3finalize"可能指的是一个工具或库,用于帮助开发者完成CSS3代码,尤其是自动添加浏览器厂商前缀,以确保在不同...
但实际开发中,应尽可能减少对`finalize`的使用,转而采用更安全的try-finally结构或者使用`try-with-resources`语句(Java 7及更高版本),以确保资源的正确关闭。同时,良好的编程习惯,如及时释放不再使用的对象...
【Java核心技术】final、finally和finalize是Java编程中三个...在编程实践中,应该优先考虑使用final来表达代码意图,避免使用finally进行资源管理,同时忽略使用finalize进行对象清理,转而采用更现代、更安全的机制。
C#借由回收站回收资源10-11使用Finalize方法Finalize对效率的影响10-12编写析构器使用析构器的考虑10-13实现IDisposable接口第11章继承.多态与接口11-l扩充基础类的功能11-1-l继承的语法11-l-2简单的UML描述11-2扩充...
C#借由回收站回收资源10-11使用Finalize方法Finalize对效率的影响10-12编写析构器使用析构器的考虑10-13实现IDisposable接口第11章继承.多态与接口11-l扩充基础类的功能11-1-l继承的语法11-l-2简单的UML描述11-2扩充...
析构函数在C#中用`~`符号标记,VB.NET则是`Finalize`方法。 5. 面向对象特性:继承、封装和多态等概念在两种语言中都有体现,但具体语法有所区别,例如访问修饰符、接口实现等。 6. 枚举和结构:C#和VB.NET在创建...
- `finalize`: 是Object类的一个方法,在垃圾收集器执行时会调用被回收对象的finalize方法。 - **匿名内部类(Anonymous Inner Class)**: 在Java中,可以创建没有名称的内部类。这种类没有类名,必须在创建时实例化...
C#程序员需要理解.NET Framework的垃圾收集机制,以便正确地使用Finalize和Dispose方法。 错误7:没有正确地使用基类的Finalize方法 在C#中,需要显示地调用基类的Finalize方法,以便正确地释放非托管资源。 错误...
- 如果实现了`finalize()`方法,确保其正确调用`super.finalize()`。 ### 16. finally块的使用 - 在try-catch语句中,使用finally块来确保必要的操作被执行。 - finally块可以用来释放资源或者执行必要的清理工作。...
- 主要是将`main`方法的逻辑迁移到`init()`和`start()`方法中,并将`finalize()`方法内容放入`destroy()`方法。同时,需要处理所有涉及安全性的代码,确保其能在沙箱环境中运行。 - 对于涉及界面的部分,可能需要...
- GC 自动管理内存,回收不再使用的对象所占用的内存,避免内存泄漏。调用 `System.gc()` 或 `Runtime.getRuntime().gc()` 可请求垃圾收集,但不保证立即执行。 7. 其他面试题目: - String 对象的创建:`String ...
1. **避免使用`new String()`创建对象** - 当创建一个新的String对象时,尤其是在频繁操作字符串的情况下,避免使用`new String()`。因为String是不可变的,每次修改都会创建新的对象,消耗内存。应尽可能使用字面...
在Python编程环境中,`PyPI`(Python Package Index)是官方的软件仓库,提供了丰富的第三方库供开发者使用。`cryptography`库是一个重要的安全工具,它为Python程序员提供了加密、哈希、随机数生成等核心安全功能。...
const hash = hmac.finalize(); // 转换为16进制字符串展示 const hexHash = hash.toString(crypto.enc.Hex); console.log(hexHash); ``` 这个过程确保了密码不会以明文形式存储,增加了安全性。然而,值得注意的...
- finalize是Object类的一个方法,在垃圾收集器执行时会调用被回收对象的finalize方法进行必要的清理工作。 2. 匿名内部类(Anonymous Inner Class)的继承和实现接口: - 匿名内部类不能extends其他类,但它可以...
- 使用start()方法启动线程,run()方法包含线程执行的代码。 11. 接口与抽象类: - 接口可以继承其他接口。 - 抽象类可以实现接口。 - 抽象类可以继承具体类(非抽象类)。 12. final, finally, finalize: -...
- finalize()方法及其在垃圾回收中的角色。 5. **泛型**: - 泛型的基本使用,类型参数化,通配符。 - 泛型方法和泛型类,类型擦除的概念。 - 上界和下界的使用,如和。 6. **IO流**: - 字节流和字符流的...
- 通常推荐使用其他机制来替代 `finalize`,比如显式地关闭资源或者使用弱引用等。 #### 二、基础Java知识点 接下来,我们将继续探讨一些基础Java知识点,这些知识点也是面试中经常被问到的内容: ##### 1. ...
这些错误和最佳实践是C++程序员在学习C#时需要注意的关键点,理解并正确使用垃圾回收、Finalize、Dispose和using语句对于编写高效、无内存问题的C#代码至关重要。在C#编程中,良好的资源管理习惯可以帮助避免性能...