【发布时间】:2011-07-07 21:47:38
【问题描述】:
我们正在开发一个由 Java 编写的 Swing 应用程序,它只需要大约 128MB 内存,而且在不久的将来我认为它不会需要更多像 4GB 这样的内存。以前,我们始终提供 3 种不同的版本,一种用于 32 位 Windows,一种用于 32 位 Linux,另一种用于 64 位 Linux,并带有包含 JRE 的安装程序。 直到几周前,任何人都没有使用 64 位版本,并且报告了 OutOfMemoryException,因为该应用程序消耗的内存比 32 位版本多 40-50%。
我的问题是,如果应用程序永远不需要使用超过 4GB 的内存,我们是否需要为 64 位 Linux 提供 64 位版本?我们进行了一些快速测试,发现 32 位版本也适用于 64 位 Linux。但我不确定我们会有什么缺点,例如性能和/或兼容性问题?
【问题讨论】:
-
让我稍微澄清一下:32位版本使用128MB作为最大内存,对于64位版本,它可能需要192MB,所以我们不仅需要创建额外的64位安装程序,而且我们有还要创建不同的配置,这使整个事情变得更加复杂。如果我们对所有版本都使用 192MB,那么它可能会使内存泄漏对我们来说不太明显,因为现在最常用的是 32 位版本。另一件事是许多应用程序可以在该服务器上运行,因此我们希望尽可能降低内存消耗。
-
如果在 64 位 JVM 中使用 32 位引用,则不需要更多内存。