java 线程内对象释放的问题

有如下线程:run(){while(true){Aa=newAa.xxx();System.out.println("test");}}我有这么一个无线循环的线程,我想知... 有如下线程:
run() {
while (true) {
A a = new A

a.xxx();

System.out.println("test");

}
}

我有这么一个无线循环的线程,我想知道,这个对象A的内存使用情况,是每次执行一遍while,new出来的实例a就被销毁了么 ?然后接下来重新new 一个新的a ?前一步new 出来的a,现在内存状态是什么样子的 ?谢谢
展开
 我来答
li136960366
2012-08-13 · TA获得超过451个赞
知道小有建树答主
回答量:234
采纳率:0%
帮助的人:225万
展开全部
不会销毁阿 每执行一次会创建一个A的对象,这时会占用一部分内存空间,在执行一次while的时候,还会创建一个对象(之前创建的仍然存在,可以GC机制回收),还会占用内存空间
桥安荷q9
2012-08-13 · TA获得超过509个赞
知道小有建树答主
回答量:314
采纳率:0%
帮助的人:326万
展开全部
while执行完一次循环a会被垃圾回收机制回收掉。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
2012-08-13 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3484万
展开全部
每次new出来的对象 都是新的对象
你这个问题和线程实际上是没有关系的...
方法运行完毕以后 会从堆中弹出来 方法弹出来以后 你new出来的对象就失去了所有的引用 就等垃圾处理器启动以后 被销毁
更多追问追答
追问
是不是说代码走到while的结尾处,当前这个对象就失去了引用,等待回收了 ?然后重新循环,在创建一个新的A对象的引用 ?
追答
.貌似太不对 ......A a = new A
主要是这里这么写的话可能会有歧义 如果是
run() {
A a;
while (true) {
a = new A()

a.xxx();

System.out.println("test");

}
}

的话上一次被new 出来的对象就会失去引用 等着被销毁
不过你的那个运行起来的话应该和上报这个事一样的效果

我第一次会的话是在下边这种情况下产生的
class test
{
run() {
while (true) {
test ts =new test();
ts.t();

}
}
t()
{
A a = new A

a.xxx();

System.out.println("test");

}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-13
展开全部
...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式