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

        }
    }
}

最佳答案

简短答案-不。

长答案-取决于try下的完整代码以及如何调用createMap()

根据您的问题,我假设您担心应用程序的功能和整体性能。内存只是它的一方面。您的Singlton类会从逻辑的角度出发,因为您没有对createMap()的并发控制,并且多个并行调用可能会覆盖someMap

这也取决于您在try{块下执行的操作。如果要将someMap发送到其他方法之外,则可能存在内存泄漏。

09-10 13:09