1

我有一个具有以下结构的类:

public class RandomMatrixIndex implements IIndex {

    private final HashMap<Long, Long> index;
    private RandomAccessFile rand;

    // constructor and methods.
}

在构造函数中打开 RandomAccessFile rand。在另一个类中,我创建了一个哈希图:

 private final HashMap<String, WeakHashMap<String, IIndex>> _MATRIX_MAP;
 _MATRIX_MAP.put(....);

该映射包含到由上述类实现的 IIndex 接口的映射。如果我将 RandomMatrixIndex 放在地图中,则引用可能会被垃圾收集,并且我无法正确关闭 RandomAccessFile。

现在我的问题。如果对 WeakHashMap 的引用丢失,我如何关闭 RandomAccessFile?我必须在 RandomMatrixIndex 构造函数中包含终结器吗?OR 是文件句柄自动关闭。(如果这是糟糕的编码风格,请原谅)

非常感谢!

4

0 回答 0