java - 终结器导致可移植性问题 - 怎么办?

标签 java finalizer

Effective Java item 7 说,终结器会导致可移植性问题。

Finalizers are unpredictable, often dangerous, and generally unnecessary. Their use can cause erratic behavior, poor performance, and portability problems.

但我不明白 Java 是平台独立的,终结器怎么会导致可移植性问题?

最佳答案

终结器通常包含释放非 JVM(系统)资源的代码。如果将资源管理委托(delegate)给他们,他们会创建非常不寻常的资源生命周期模式(大量不必要的开放资源+一次释放数千个资源)。这听起来确实很危险,并且在每个尚未经过测试的平台上,它都构成了不可预测的崩溃威胁。

关于java - 终结器导致可移植性问题 - 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31795857/

相关文章:

java - 在 Java 中组合数组

java - 如何使用 Hibernate Search/Lucene 根据列值对行进行索引?

java - Java 集成测试中的 void 方法

java - 检查字符串是否仅包含数字,然后仅当它不包含数字以外的字符时才设置它

java - 如何使用 Java 上的正则表达式识别数组中的字符串文字?

c# - 使用解构函数是错误的吗?

javascript - 如何在 Chrome 中查找未被销毁但已被 GC 处理的 Javascript 对象?

c# - 当我们没有析构函数时为什么要调用 SuppressFinalize

.net - 我如何找到挂起的终结器队列的原因?

java - 我们可以关闭终结器吗?