在有狀態EJB上的@remove註釋示例中,註釋的方法nullifys該bean的實例變量。爲什麼?當然,破壞這個bean會破壞它的內容,即任何變量?爲什麼在銷燬有狀態EJB時無效實例變量?
感謝, 喬恩
在有狀態EJB上的@remove註釋示例中,註釋的方法nullifys該bean的實例變量。爲什麼?當然,破壞這個bean會破壞它的內容,即任何變量?爲什麼在銷燬有狀態EJB時無效實例變量?
感謝, 喬恩
你能發佈示例源代碼?或者不要。主動設置null
不是必需的 - 當EJB被銷燬並且很快收集垃圾時,它所引用的所有對象(當然提供沒有其他引用)都將被垃圾收集。
設置對象的各個領域null
有兩個有用的效果:
它提供了對邏輯錯誤,這將導致一個無效的對象被重複使用的硬障礙。該應用程序會崩潰而不是靜靜地產生不正確的結果。
它通過從對象參考圖中刪除邊來幫助Java VM垃圾收集器,從而提高整體性能。
如果ejbRemove(),實例的屬性被擦乾淨並且客戶端仍然引用實例。客戶端仍然可以訪問同一個對象。這是不可取的。
設置成員引用爲null [不太可能](http://www.ibm.com/developerworks/java/library/j-jtp01274/index.html#3.2)來幫助垃圾收集器。 – McDowell
@McDowell:這將取決於* how *字段設置爲null。如果在正常操作過程中這是一項簡單的任務,那至少根據我的配置文件,這很好,很有幫助。如果它需要通過顯式行走複雜結構來複制GC的操作,那麼這是一個非常糟糕的主意。一般來說,在進行這樣的微觀優化之前,應該介紹他們的程序... – thkala