WeakHashMap的清除问题

qq_31134691 2015-11-06 02:00:30
代码如下:
---------------------------------------------------------------------------------------------------
import java.util.*;

public class Test14 {
public static void main(String[] args) {
Map<String, String> map=new WeakHashMap<String, String>();
map.put("3", "future");
map.put("2", "good");
map.put(new String("1"), "LLL");

System.out.println(map); //此处输出的是{1=LLL, 2=good, 3=future}
System.gc();
System.out.println(map); //而此处输出的是{2=good, 3=future}
}
}


为什么改成"new String('1')"才能被清除?
...全文
153 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
解开者 2015-11-06
  • 打赏
  • 举报
回复
字符串字面量是对方法区而不是对堆内存的引用,不能保证调用gc就一定会回收方法区
tony4geek 2015-11-06
  • 打赏
  • 举报
回复
参考 String t=new String("1"); map.put("3", "future"); map.put("2", "good"); map.put(new String("1").intern(), "LLL");
tony4geek 2015-11-06
  • 打赏
  • 举报
回复
	Map<String, String> map = new WeakHashMap<String, String>();
		String t=new String("1");
		map.put("3", "future");
		map.put("2", "good");
		map.put(t, "LLL");

		System.out.println(map);  
		System.gc();
		System.out.println(map); 
心随自在飞 2015-11-06
  • 打赏
  • 举报
回复
看见第一个整点帖 先占个沙发

50,550

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧