更新:看起来这不是内存泄漏,有人会基于这个例子的扩展创建吗?
原问题:
假设我创建并启动了一个不会终止的线程,只要它还活着,该线程就会创建一个对象和引用。请参见以下代码。 JVM 会收集垃圾 x
吗?
这会被视为内存泄漏吗?
public class MyRunnable implements Runnable{
public void run(){
X x = new X();
while(true){}
}
}
Thread t = new Thread(new MyRunnable());
t.start();
最佳答案
线程永远不会终止,所以垃圾收集器永远不会释放 x
。但是,如果您从未真正使用过 x
,它可能会被优化掉。如果您确实使用了 x,则这不可能是内存泄漏 - 您使用内存。
关于java - 这是java内存泄漏吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14499058/