gpt4 book ai didi

java - 你能指望 .finalize() 被调用吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:49:12 24 4
gpt4 key购买 nike

我试图检测我的一些 Java 代码以确保对象被正确地垃圾收集,但我惊讶地发现它并没有像我预期的那样频繁地被调用。

我现在想知道这是因为检测错误还是我需要解决的实际内存泄漏。 VisualVM 分析器似乎表明是前者。

问题是我有一个处理请求的线程,并且在请求中创建了数千个临时对象。有时,这个线程写入的套接字意外关闭,线程遇到异常而死。

当 Thread 结束时,似乎不会对这些对象调用 .finalize()。这是不信任我的仪器的原因吗?

最佳答案

Finalize() 不是解决方案。如果有的话,你不知道什么时候会调用终结器。如果您的问题是异常,请使用 try/catch/finally block 并关闭/清除您要在 finally block 中关闭的所有内容。这保证了在两种情况下都会清除所有内容:逻辑正常终止或抛出异常。

关于java - 你能指望 .finalize() 被调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com