Java中是否有析构函数来对应构造函数?

53 浏览
0 Comments

Java中是否有析构函数来对应构造函数?

这个问题已经有了答案:

Java中是否有析构函数?

由于Java编程有构造函数可以在实例化新对象时运行代码,我想知道是否有相应的函数。创建新对象会占用内存,那么在Java中是否有一种机制可以擦除或覆盖未使用的内存?

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

admin 更改状态以发布 2023年5月24日
0
0 Comments

在Java中,对于在代码中没有任何引用(称为垃圾)的使用中的内存,有一种称为垃圾回收器的机制来擦除它。JVM会在必要时调用它,但你也可以通过System.gc()调用它。

作为构造函数的对应物(即在实例化对象时执行的代码),有一个称为finalize方法的机制,在对象被垃圾回收时执行。

你可以覆盖它(它在Object类中定义)。

0
0 Comments

你可以覆盖在java.lang.Object中定义的finalize方法

不能保证在程序运行期间一定会调用你的finalize方法!请查看JavaDoc!因此,在大多数情况下,重写'finalize'不是一个好主意。

如果你需要清理资源,你可以使用'try/finally'语句或者如果你使用像'Spring'这样的框架,可以使用框架提供的一些钩子(如@PreDestroy)。

顺便说一下:在Java中,你不能主动擦除或覆盖内存区域,这由垃圾回收器完成。

0