2012-02-02 73 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