2012-02-02 71 views
0

我正在使用版本1.5.0_22在Windows 7 32位Java上,我確定在我的應用程序單身對象引用不保留一個進程的內存到另一個,甚至運行在相同的JVM。與Windows 7的java單身人士

有沒有人有這個問題或知道如何解決它?

謝謝

+2

「不保留一個進程的內存到另一個」< - 我不明白:(無論如何,您的單例實現和用法的示例代碼?另外,除非這個問題*特定*到Windows 7,考慮從標題/標籤中刪除它...並考慮Java 6(甚至7甚至) – 2012-02-02 20:26:39

+0

你是什麼意思「不保留一個進程的內存到另一個」? – recursive 2012-02-02 20:26:56

+1

我不明白 - singleton在程序的單獨運行之間不保留相同的內存引用?爲什麼會這樣?當關閉應用程序時,所有內存(以及它們的指針/內存引用)被釋放。 – jefflunt 2012-02-02 20:26:58

回答

0

每個JVM總是有一個Singleton。如果您在應用程序中運行更多線程,它們將共享Singleton的相同實例。 如果不是,那麼向我們展示您的代碼,以及如何使用您的單例。

如果你正在運行Java Swing應用程序(或類似的東西),我懷疑你的單例有多個實例。

如果你正在servlet環境中運行它......是的,你可以有更多的實例。如果是這樣的話,擺脫Singleton模式(你應該找出其他解決方案)。

還不確定?請閱讀:http://java.sun.com/developer/technicalArticles/Programming/singletons/

+2

你的意思是每個類加載器有一個Singleton – Luciano 2012-02-02 20:47:48

+0

好點Luciano,我編輯了答案。 – 2012-02-02 21:14:11