Re: [問題] object指向null後 class variable怎麼辦?

看板java作者 (petr)時間16年前 (2009/11/13 14:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/5 (看更多)
※ 引述《tkcn (小安)》之銘言: : ※ 引述《johjimakenji (喬治馬健司)》之銘言: : : 如果想要刪除一個object 就是令它指向null : : 但如果該物件裡包含class varible : : 例如 public static int sum = 0; : : 每new一次這個object就會sum++ 用來計算總共有幾個object : : 但如果把object指向null sum的值並不會改變 : : 請問有什麼辦法解決? : : 就是想要刪除這個object並讓sum的值正確 : 寫個 finalize method 吧, : 這樣當 GC 去回收此物件時,就會執行到 finalize 了。 : 不過要注意一點, : 並不是將 reference 設成 null,GC 就會立刻回收該物件。 : 所以如果你希望將 reference 設成 null 時,sum 能立刻反應, : 還是自己寫 --sum 吧。 使用finalizer是絕對不智的 JVM內thread執行finalizer的priority通常很低 Java的spec甚至沒有規定finalizer一定會被執行 甚至可能JVM結束了,finilizer都不會被執行到 如果想要有一個統計總共有幾個instance的資訊 1. 最簡單的方式是使用Collection來裝這些instance,不用了就把它remove掉 或者 2. 使用一個private的變數來記錄這個instance是否已經不再需要, 如果這instance不要了,就把這個變數設為false,然後--sum,但是每個client 要使用這類class時,要先check這個instance是否合法,要把它丟掉的時候 設為false -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.23.102
文章代碼(AID): #1A_FnRQD (java)
討論串 (同標題文章)
文章代碼(AID): #1A_FnRQD (java)