Re: [問題] 幾個java的問題?

看板java作者 (心夜)時間18年前 (2008/02/23 12:26), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串4/5 (看更多)
※ 引述《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

02/23 12:57, , 1F
講保守點, 在某些平台上, 預設的gc是一條thread
02/23 12:57, 1F

02/23 19:17, , 2F
我有問題?為什麼會是三個~~每個loop的開始都將new出來的
02/23 19:17, 2F

02/23 19:19, , 3F
東西assign給同一個變數theXMLFile~~這樣會壓過去吧
02/23 19:19, 3F

02/23 21:55, , 4F
因為被壓過去的是 theXMLFile 變數而不是物件實體。
02/23 21:55, 4F
文章代碼(AID): #17lw2Ilu (java)
文章代碼(AID): #17lw2Ilu (java)