这种模式会调用内存泄漏

时间:2018-03-16 16:50:45

标签: java

如果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){

        }
    }
}

2 个答案:

答案 0 :(得分:1)

简短回答 - 没有。

答案很长 - 取决于try下的完整代码以及createMap()的调用方式。

我从您的问题中假设您关注应用程序的功能和整体性能。记忆只是它的一个方面。由于您没有createMap()上的并发控制,并且多个并行调用可能会覆盖someMap,因此您的Singlton类会立即脱离逻辑角度。

这也取决于你在try{块下做了什么。如果您将someMap外部发送到另一个方法左右,则可能存在内存泄漏。

答案 1 :(得分:0)

这不会造成内存泄漏。

您有一个变量是HashMap的引用,只能引用一个HashMap

在循环中,前一个hashmap将丢失其引用,然后成为垃圾收集的候选者。