首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中有没有析构函数来对抗构造函数呢?

java中有没有析构函数来对抗构造函数呢?
EN

Stack Overflow用户
提问于 2015-06-24 15:10:19
回答 2查看 1.5K关注 0票数 0

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

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

EN

回答 2

Stack Overflow用户

发布于 2015-06-24 15:16:40

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

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2015-06-24 15:18:06

在java中,为了擦除内存,它与代码中没有任何引用(称为垃圾)的对象一起使用,有一种称为垃圾调用器的机制。JVM在必要的时候调用它,但是你可以通过System.gc()来调用它。

作为构造函数的计数器(这是一些在对象实例化时执行的代码),有一个finalize方法,它在对象进行垃圾回收时执行。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31019993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档