我有一个测试应用程序,其中包含一个存储地图的类和一个调用该类方法的按钮:
Map<Object, Object> weakMap = new WeakHashMap<Object, Object>();
该按钮执行此操作:
public void fillWeakHashMap(int size) {
List<String> createObjects = (List<String>) createObject(size);
for (Object ob : createObjects) {
weakMap.put(ob, ob);
}
}
因此,带有地图的主类仍然存在,但我放入它的对象是在单独的方法中创建的,因为它是一个WeakHashMap
我认为从方法退出后fillWeakHashMap
,地图中的键/对象将被 GC 清除。
我打开 VisualVM->VisualGC 并单击 Monitor->PerformGC 10 次,旧空间几乎已满,这意味着 GC 没有清除这些对象。那么我做错了什么?