java - java中有析构函数来对抗构造函数吗?

标签 java constructor

由于 Java 编程具有在实例化新对象时运行代码的构造函数,所以我很好奇是否有东西可以解决这个问题。创建新对象会占用内存,那么Java中有没有一种机制可以删除或覆盖未使用的内存?

如果 Java 中有析构函数,那么它与 C 等编程语言中的其他内存管理系统有何不同?

最佳答案

您可以重写java.lang.Object中定义的finalize方法

无法保证您的finalize方法在程序运行期间被调用!看看 JavaDoc!因此,在大多数情况下,覆盖“finalize”并不是一个好主意。

如果您需要清理资源,您可以使用“try/finally”语句,或者如果您使用“Spring”等框架,则可以使用该框架提供的某些钩子(Hook)(例如 @PreDestroy )

顺便说一句:在java中你不能主动删除或覆盖内存区域,这是由垃圾收集器完成的。

关于java - java中有析构函数来对抗构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31019993/

相关文章:

javascript - JS面向对象: methods on prototype vs methods in constructor function

java - 空指针异常帮助

java - MQ 队列应允许最大 5MB 的文件传输

java - 使用 Gradle 为多个模块构建一个 jar 的最简单方法是什么?

c++ - 使用模板构造函数创建模板类对象

c++ - 在对象构造函数中初始化boost线程?

c++ - C++ 标准对于从类型 a 转换为类型 b 与实例化/构造类型 b 之间的区别有何规​​定?

java - 在这种情况下,字符串构造函数 - String(String original) 中的 'size > originalValue.length' 会是 0x104567910 吗?

JAVA,Selenium - 使用变量从日历中选择日期

java - 嵌套 for 循环打印数组列表中的一组值