- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当你执行如下操作时,
@Override
protected void finalize() throws Throwable {
////////////////////////
this.aVeryBigComponent = null;
////////////////////////
super.finalize();
}
Sonar 提示
Bad practice - Finalizer only nulls fields
findbugs : FI_FINALIZER_ONLY_NULLS_FIELDS
This finalizer does nothing except null out fields. This is completely pointless, and requires that the object be garbage collected, finalized, and then garbage collected again. You should just remove the finalize method.
只要我知道将字段设置为 null 有助于垃圾收集器在第一次运行/生成时销毁对象。如果我不将该字段设置为 null,该对象可能会被发送到第二代,并会等待更多时间。
你觉得怎么样?
最佳答案
If I do not set the field to null, that object may be sent to the second generation and will wait more.
如果您根本没有终结器,那么您的对象将有资格提前进行垃圾回收,并且其字段不会被计为 GC 根,因此其他对象可能也符合资格同时进行垃圾收集。
即使您确实需要终结器,除非该终结器复活该对象,否则终结的对象仍然有资格进行垃圾回收,因此其字段不会使其他对象保持 Activity 状态。
用 Java 编写终结器很少是一个好主意……如果它只是将字段设置为 null,那绝对是一个坏主意。 (这几乎肯定会损害性能而不是帮助它。)
关于java - 您如何看待 Sonar 的不良做法 - Finalizer 仅将字段设为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18590936/
由“CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", ES_MULTILINE.."创建的文本框需要\r\n 换行。我将我的 stdoutput 重定向到那个文
我是一名优秀的程序员,十分优秀!