我在公开可用的地图中保留对本地创建的对象的引用。当我从地图中删除对象时,它也应该从内存中删除(无效)。如何从地图中删除对象/实例后从内存中删除?
public class X {
public boolean infiniteloop = true;
public X() {
new Thread(new Runnable() {
@Override
public void run() {
while (infiniteloop) {
System.out.println("Still exists");
}
}
}).start();
}
public class Y{
Map myMap = new HashMap();
public Y() throws InterruptedException{
X x = new X();
myMap.put("Key", x);
Thread.sleep(10000);
((X)myMap.get("Key")).infiniteloop= false;
myMap.remove("Key");
}
}
在上面的代码中,“仍然存在”是在myMap.remove(“Key”)之后进行的。这意味着对象仍然存在于内存中。我如何从内存中删除它?
'Runnable'不关心它是否在地图中。 –
runnable不是我认为的问题,因为我在将地图中的对象从地图中移除之前将inifiniteloop设置为false。 – MeesterPatat
不,您将其设置为false,'Thread'已经运行。你可以简单地用调试器检查它。 –