【发布时间】:2012-01-02 00:24:51
【问题描述】:
我有一个使用复杂静态字段的 java 类,需要像 close() 这样的特殊操作,以便它们被 GC 安全清理。
对于静态字段的初始化,我使用static 块。但是我现在不知道如何安全卸载静态字段,以便在该字段被GC清理之前调用close()方法。
有没有办法卸载静态字段,类似于静态初始化块?
【问题讨论】:
-
你考虑过使用 finalize() 吗?
-
我有。但据我所知,finalize 适用于类的对象,而不是该类的静态字段。所以,finalize 对我来说不是一个选择。
-
可能使用一个静态字段来保存对该类对象的活动引用数(在构造函数中增加,在 finalize() 中减少)并调用 close() 或您对这些对象拥有的任何清理方法当 finalize() 在递减后遇到引用计数为 0 时的“复杂”静态 - 不过我还没有尝试过。
标签: java static initialization