【发布时间】:2010-11-14 12:27:57
【问题描述】:
我的 Java 应用程序通过运行“java -jar j.jar”进程来运行另一个 Java 应用程序。众所周知,J.jar 会根据给定的数据集使用大量内存,并且经常会获得 OutOfMemoryError 堆。所以我想在它上面使用-Xmx,这样我就可以分配尽可能多的内存(或接近)。我正在考虑获取系统上的总内存,然后在 -Xmx 中指定其中的 80-90%。
我的问题有什么解决办法吗?而且,我的解决方案听起来如何?
编辑:我无法减少内存消耗,因为正在使用的内存是 Java 的内置 pack200 压缩,我用它来打包一些 JAR 文件。
【问题讨论】:
-
那么你实际上是在问如何使用Java来确定系统内存量?
-
是的,这将是一种可能的解决方案,如果您知道方法,将不胜感激。
-
您运行的是 64 位 jvm 吗?因为如果你运行的是 32 位,那么如果你的免费内存变成 7G,那么“80%”位就会出现问题,例如
-
是否有 C++ 的等价物???
-
分配给 jvm 的可用内存应该基于数据集的大小,而不是本地主机上的(完全正交的)可用内存。对于独立于本地内存的可扩展解决方案,请使用分布式缓存。