作者neigence (心夜)
站内java
标题Re: [问题] 几个java的问题?
时间Sat Feb 23 12:26:57 2008
※ 引述《ryan11 (我叫雷恩)》之铭言:
: 1.我这个new是不是在每次loop中都会产生一个物件不会消失
: 会愈来愈多?
: public static void main(String[] args){
: while(doesContinue){
: ...
: Document doc = builder.parse(new File(xmlFile));
: ...
: }
: }
ans : 不会,java的gc是一条thread,当一个物件不被任何东西reference到
的时後,就会在下次gc启动的时後回收掉,gc会回收这类的垃圾物件,
但不保证在那一个时刻回收。
: 2.这样是否每次参考(theXMLFile)都被指派到新的物件上
: 而上一个loop所指派的物件就回收了, 所以不会产生太多物件
: public static void main(String[] args){
: while(doesContinue){
: ...
: File theXMLFile = new File(xmlFile);
: Document doc = builder.parse(theXMLFile);
: ...
: }
: }
ans : 的确是都会被指派到新物件上,而上次loop指派的物件是会被回收,
但跟第1个问题一样,不保证在什麽时後回收,极端点讲,也许loop跑
了3次,gc才启动一口气回收3个new File(xmlFile)。
: 观念不是很好
: 请各位指点迷津
: 先谢谢了m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.184.223
1F:推 qrtt1:讲保守点, 在某些平台上, 预设的gc是一条thread 02/23 12:57
2F:推 jb0802:我有问题?为什麽会是三个~~每个loop的开始都将new出来的 02/23 19:17
3F:→ jb0802:东西assign给同一个变数theXMLFile~~这样会压过去吧 02/23 19:19
4F:推 H45:因为被压过去的是 theXMLFile 变数而不是物件实体。 02/23 21:55