我想知道是否有人可以告诉我 JavaClass
对象何时被垃圾收集。我的用例是一个缓存(Map<Class<?>, Class<?>[]>
),它保存对象的类层次结构。
例如:
的(短)层次结构String.class
将是(降序):String.class
-> Object.class
。这种类型的有效缓存条目是[KEY: String.class, VALUE: {String.class, Object.class}]
.
我想String.class
这是一个不好的例子,因为 String.class 应该被垃圾收集......
我需要这个缓存用于我正在处理的序列化项目。在编写对象时,我的系统需要该对象的层次结构来选择正确的“编解码器(序列化器)”。收集每个对象的层次结构会导致一些不必要的开销。但后来我想到了内存泄漏。可能类对象可以被垃圾收集(我不知道),这在我的缓存中使用强引用时不起作用。
你认为 WeakHashMap 就足够了吗?还是我必须使用类似的东西:
Map<WeakReference<Class<?>>, WeakReference<Class<?>>[]> ?
你怎么看这个问题?