【发布时间】:2014-01-28 08:33:17
【问题描述】:
我们正在运行一个用于渲染和显示大量图像的 Java 应用程序。为了使这一切顺利进行,我们想分配相当数量的堆空间,并想检查计算机上是否有 64 位版本可用。我们希望在多台不同的计算机上运行该应用程序,因此通过反复试验手动检查可用内存和运行时版本非常麻烦。
有谁知道确定可以为堆空间保留的可用内存并确定可用 JRE 的方法吗?所以我们可以在执行 jar 时以某种方式将这些参数传递给 JRE?
我知道这需要某种批处理文件,就像在这个线程中讨论的那样: Setting Launch Parameters In Java Class
有没有人遇到过适用于 Windows 环境的运行示例?我对 Windows 批处理文件的了解充其量是有限的。
问候,马吕斯
【问题讨论】:
-
我会考虑检查是否有足够的内存用于所需的堆空间,而不是检查可用内存和保留堆。区别很重要,因为以减少的堆空间启动您的应用会使您的应用容易受到 OutOfMemory 错误的影响
-
JRE 已经有一个相当好的默认值,并且会根据可用的物理内存来调整堆大小。在 Java 7 中,它是总 RAM 的四分之一,或最大 1 GB。
-
@MarkoTopolnik 是专门的服务器虚拟机;必须确保使用它。
-
@Gimby 我测试了这个:
java -client -XX:+PrintCommandLineFlags -version,上面写着-XX:MaxHeapSize=2147483648。那是 2 GB,所以实际上我在上面的评论中错了:最多 2 GB(服务器和客户端)。 -
@MarkoTopolnik:很奇怪,因为我可以发誓你所说的至少在 Java 6 更新 17/18 及更高版本中是正确的;也许在 Java 7 中事情发生了变化,我们错过了。
标签: java batch-file memory heap-memory