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,现在内存状态是什么样子的 ?谢谢 展开
run() {
while (true) {
A a = new A
a.xxx();
System.out.println("test");
}
}
我有这么一个无线循环的线程,我想知道,这个对象A的内存使用情况,是每次执行一遍while,new出来的实例a就被销毁了么 ?然后接下来重新new 一个新的a ?前一步new 出来的a,现在内存状态是什么样子的 ?谢谢 展开
4个回答
展开全部
while执行完一次循环a会被垃圾回收机制回收掉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每次new出来的对象 都是新的对象
你这个问题和线程实际上是没有关系的...
方法运行完毕以后 会从堆中弹出来 方法弹出来以后 你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
展开全部
...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询