作者tofuflower (无)
看板java
标题[问题]new新物件的问题
时间Thu Apr 7 22:06:46 2011
请问下列三种写法
1.
MyObject obj;
for(int i=0;i<10000000;i++)
{
obj=new MyObject();
do something......
}
2.
for(int i=0;i<10000000;i++)
{
MyObject obj=new MyObject();
do something......
}
3.
MyObject obj=new MyObject();
for(int i=0;i<10000000;i++)
{
obj.init();
do something......
}
其中3是我现在的写法,但是obj.init()会花太多时间
(比new一个新的MyObject还花时间)
所以想请问1和2这两种写法那种比较好?
2我的议题是这样每次都宣告一个新的obj,那上一个obj memory会回收吗?
如果会是甚麽时候回收?
ps.一开始用过2的写法,但曾经出现过java heap size的问题...
感觉就是一直宣告MyObject obj=new MyObject()把记忆体塞爆?
1我的议题是虽然只宣告一次obj
但之後也是每次都分给他一个新的memory空间...?
和2的写法比好像一样?
总之我不太了解java在甚麽时候会回收不用的记忆体?
而怎样的情况下该变数的记忆体会被认定为不在使用可以回收的?
烦请有经验的版友指教
或者有人有推荐的书即可以介绍一下的
感谢 orz...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.159.249
1F:→ rofellosx:没人晓得什麽时候回收吧... 04/07 23:16
2F:推 luoqr:这三种写法基本上差不多 重构一下init()可能还比较有帮助 04/07 23:58
3F:推 tomap41017:推楼上 04/11 01:52
4F:推 MephistoH:第2个做法在回圈}後 obj就会不见了 1,3在外层}不见 04/25 16:23