Java 这种模式会称为内存泄漏吗

Java 这种模式会称为内存泄漏吗,java,Java,若有某个类的单例实例,而另一个类在某个类的实例上重复调用createMap方法,那个么会有内存泄漏吗?我用50000个循环测试了这个,并监控了堆,我没有看到泄漏,但想听听意见 class SomeClass { Map<String, String> someMap; public void createMap() { someMap = new HashMap<String, String>(); System.out.

若有某个类的单例实例,而另一个类在某个类的实例上重复调用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

从您的问题中,我假设您关心应用程序的功能和总体性能。记忆只是它的一个方面。Singleton类将立即脱离逻辑透视图,因为您在createMap上没有并发控制,并且多个并行调用可能会覆盖someMap


这还取决于您在try{block下执行的操作。如果您将某个映射发送到外部的另一个方法或其他方法,则可能存在内存泄漏。

这不会造成内存泄漏

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


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

否。您将创建成吨的hashmap实例,这些实例最终将被GCD。您认为这会导致内存泄漏吗?