线程 与 内存

yipianchuyun 2010-04-10 11:39:12
在一个方法中new一个对象,如果调用该方法,调用完该方法中该方法中分配的内存即方法栈内存会被回收,
我想问的是如果在该方法中new一个Thread类型的对象,那方法调用完毕后,Thread类型的对象所在的内存又是怎样处理的
急急急!!!
...全文
146 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yipianchuyun 2010-04-11
  • 打赏
  • 举报
回复
线程对象的内存又是如何处理的
yipianchuyun 2010-04-11
  • 打赏
  • 举报
回复
如果该方法调用完毕,而子线程却没有运行完毕 这种情况呢
yipianchuyun 2010-04-11
  • 打赏
  • 举报
回复
哦 有点理解了 谢谢
wd9053 2010-04-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yipianchuyun 的回复:]

但是方法调用完后,方法中分配的内存应该被回收啊
[/Quote]
回收的前提是方法中分配的内存成为垃圾内存了,比如说
public class Test
{
public String a;
public String b;

public Test()
{
createA();
b = createB();
}

public String createB()
{
return new String("afd");
}

public void createA()
{
a = new String("a");
}
}

方法虽然结束了,但创建的String对象由于还有方法外面的引用,所以不会被回收。
方法中运行的线程如果没有结束,那么类库中支持线程运行的类肯定会有指向该线程的引用,所以线程所在内存不会被回收
yipianchuyun 2010-04-11
  • 打赏
  • 举报
回复
但是方法调用完后,方法中分配的内存应该被回收啊
wd9053 2010-04-11
  • 打赏
  • 举报
回复
线程内存如何处理的不清楚,不过如果该方法调用完毕,而子线程却没有运行完毕,那么在子线程运行结束之前都不会被回收。
我的理解是,一个对象如果没有任何指向它的引用,那么它才能成为垃圾,而线程运行肯定需要某些类/函数的支持,所以子线程运行结束之前,必然会有指向它的引用,所以不会成为垃圾内存。
wd9053 2010-04-10
  • 打赏
  • 举报
回复
如果没有指向该对象的变量并且线程还未开始运行或运行完毕,则Thread类型的对象所在的内存成为垃圾内存

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧