OutOfMemory错误:静态方法

时间:2017-03-29 03:00:12

标签: java out-of-memory synchronized

执行getInstance时出现OutOfmemory错误。我检查了线程转储,发现线程是BLOCKED(在getInstance上等待Monitor Lock)。

我是多线程的新手。有人可以解释一下以下实施是否正确?如果没有,怎么改进?

class MyClass {
    private static MyClass instance = new MyClass();
    public static MyClass getInstance() throws Exception {
        synchronized (instance) {...}
    }
    public static MyClass clearInstance() throws Exception {
        synchronized (instance) {...}
    }
}

1 个答案:

答案 0 :(得分:0)

这不是多线程的问题,但是当你创建一个Myclass的对象时,它有一个实例变量实例,它创建了Myclass的另一个对象,它进入了一个永无止境的循环。 所以,这就是为什么你会出现内存不足或堆栈溢出错误的原因。