Java xp和Windows 7的jvm内存分配策略不同

Java xp和Windows 7的jvm内存分配策略不同,java,swing,jvm,Java,Swing,Jvm,我有一个很重的java swing应用程序。它在Windows xp中使用jvm参数-xmx=512mb平稳运行了几个小时。 但当我在windows7(32位)上运行它时,它在1小时内得到了heapOutOfMemory异常。jvm选项是相同的。 我的java版本是jdk-1.6.0。 谁能帮忙吗。这个问题的原因可能是什么。堆正在被填满,因此与物理内存或交换无关。问题是,为什么JVM在两个操作系统上的行为不同?无论如何,似乎有什么东西干扰了垃圾收集,最有可能的是,您正在实例化许多对象并保存对它们

我有一个很重的java swing应用程序。它在Windows xp中使用
jvm参数-xmx=512mb平稳运行了几个小时。
但当我在windows7(32位)上运行它时,它在1小时内得到了
heapOutOfMemory异常。jvm选项是相同的。
我的java版本是jdk-1.6.0。

谁能帮忙吗。这个问题的原因可能是什么。

堆正在被填满,因此与物理内存或交换无关。问题是,为什么JVM在两个操作系统上的行为不同?无论如何,似乎有什么东西干扰了垃圾收集,最有可能的是,您正在实例化许多对象并保存对它们的引用。在Swing应用程序中,这通常与未删除的侦听器有关。在代码中查找重复实例化对象的位置。确保所有与它们关联的引用在不再使用时都设置为null。更好的方法是,查看实例化一次然后重新使用实例的方法,可能通过打开和关闭可见性来实现。

您的RAM内存有什么不同吗?在内存耗尽之前,您是否发现CPU已达到100%?请检查
XP
Windows
两台机器的虚拟内存设置是否具有相同的RAM 2 gb