2012-05-06 22 views

回答

2

你能發佈示例源代碼?或者不要。主動設置null不是必需的 - 當EJB被銷燬並且很快收集垃圾時,它所引用的所有對象(當然提供沒有其他引用)都將被垃圾收集。

3

設置對象的各個領域null有兩個有用的效果:

  • 它提供了對邏輯錯誤,這將導致一個無效的對象被重複使用的硬障礙。該應用程序會崩潰而不是靜靜地產生不正確的結果。

  • 它通過從對象參考圖中刪除邊來幫助Java VM垃圾收集器,從而提高整體性能。

+0

設置成員引用爲null [不太可能](http://www.ibm.com/developerworks/java/library/j-jtp01274/index.html#3.2)來幫助垃圾收集器。 – McDowell

+0

@McDowell:這將取決於* how *字段設置爲null。如果在正常操作過程中這是一項簡單的任務,那至少根據我的配置文件,這很好,很有幫助。如果它需要通過顯式行走複雜結構來複制GC的操作,那麼這是一個非常糟糕的主意。一般來說,在進行這樣的微觀優化之前,應該介紹他們的程序... – thkala

0

如果ejbRemove(),實例的屬性被擦乾淨並且客戶端仍然引用實例。客戶端仍然可以訪問同一個對象。這是不可取的。