如果SomeClass的单例实例和其他一些类在SomeClass实例上重复调用createMap()方法那么会不会有内存泄漏?我用50000循环和受监控的堆测试了这个,我没有看到泄漏但是想要意见。
class SomeClass {
Map<String, String> someMap;
public void createMap() {
someMap = new HashMap<String, String>();
System.out.println("Created map");
try {
Thread.sleep(10);
} catch(InterruptedException ie){
}
}
}
答案 0 :(得分:1)
简短回答 - 没有。
答案很长 - 取决于try
下的完整代码以及createMap()
的调用方式。
我从您的问题中假设您关注应用程序的功能和整体性能。记忆只是它的一个方面。由于您没有createMap()
上的并发控制,并且多个并行调用可能会覆盖someMap
,因此您的Singlton类会立即脱离逻辑角度。
这也取决于你在try{
块下做了什么。如果您将someMap
外部发送到另一个方法左右,则可能存在内存泄漏。
答案 1 :(得分:0)
这不会造成内存泄漏。
您有一个变量是HashMap
的引用,只能引用一个HashMap
。
在循环中,前一个hashmap将丢失其引用,然后成为垃圾收集的候选者。