0

我的应用程序中有一个静态地图,当我单击链接时会填充该地图。之后,它会制作很多对象并存储它们。现在我有一个链接可以清除这张地图。

这是我的代码。

Hello1 hello1 = new Hello1();
hello1.setHello("Helllollo1");
Hello hello = new Hello();
hello.setHello1(hello1);
hello.setHello("Hellollo");
setMap("1", (Object)hello);

Hello1 hello2 = new Hello1();
hello2.setHello("Helllollo1");
Hello helo = new Hello();
helo.setHello1(hello2);
helo.setHello("Hellollo");
setMap("2", (Object)helo);

Hello1 hello3 = new Hello1();
hello2.setHello("Helllollo1");
Hello helo1 = new Hello();
helo1.setHello1(hello3);
helo1.setHello("Hellollo");
setMap("3", (Object)helo1); 

现在我有一个方法 removeMap 它的工作原理如下

public static void removeMap(String key){

        if(map.containsKey(key)){

            map.remove(key);
        }   
    }

那么当我在添加上述三个对象后为单个键调用此方法时,该对象是否已被垃圾收集?

4

3 回答 3

2

是的,在地图被清除后,如果没有其他强引用,从地图中引用的对象将有资格进行垃圾回收。

请注意,从映射中删除条目不会立即导致垃圾收集 - 它只是意味着映射将不再阻止对象被垃圾收集。

于 2012-07-02T07:07:30.047 回答
0

是的,当您Map被清除或从中删除对象时,对象将有资格进行垃圾回收。因为对象没有任何引用,所以它们有资格进行 GC。

任何无法访问或没有引用的对象都有资格被收集。

于 2012-07-02T07:14:54.147 回答
0

你的问题体现了一个矛盾的术语。如果对象,或者更确切地说是对对象的引用,已从地图中删除,则它根本不再“在地图内”。

于 2012-07-02T10:26:26.303 回答