首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是java内存泄漏吗?

这是java内存泄漏吗?
EN

Stack Overflow用户
提问于 2013-01-24 18:27:01
回答 4查看 301关注 0票数 7

更新:看起来不是内存泄漏,有人会基于这个例子的扩展创建吗?

原始问题:假设我创建并启动了一个没有终止的线程,只要它还活着,这个线程就会创建一个对象和引用。请参见以下代码。JVM会对x进行垃圾回收吗?这会被认为是内存泄漏吗?

代码语言:javascript
复制
public class MyRunnable implements Runnable{

    public void run(){
      X x = new X();
      while(true){}
   }
}

Thread t = new Thread(new MyRunnable());
t.start();
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-24 18:29:55

线程永远不会终止,因此垃圾收集器永远不会释放x。然而,如果你从来没有真正使用过x,它可能会被优化掉。如果你确实使用了x,这不可能是一个内存泄漏--你使用的是内存。

票数 5
EN

Stack Overflow用户

发布于 2013-01-24 18:31:31

x具有方法作用域,并且在方法返回或显式执行x = null之前,x不会被垃圾收集。不,这不会被认为是泄漏。

票数 0
EN

Stack Overflow用户

发布于 2013-01-24 18:31:33

会对x进行垃圾回收吗?

不,因为线程还在维护对它的引用。

这会被认为是内存泄漏吗?

不是真正的泄漏,而是内存的浪费。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14499058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档