gpt4 book ai didi

Java -Xmx,系统最大内存

转载 作者:IT老高 更新时间:2023-10-28 20:41:34 34 4
gpt4 key购买 nike

我的 Java 应用程序通过运行“java -jar j.jar”进程来运行另一个 Java 应用程序。众所周知,J.jar 会根据给定的数据集使用大量内存,并且经常会获得 OutOfMemoryError 堆。所以我想在它上面使用-Xmx,这样我就可以分配尽可能多的内存(或接近)。我正在考虑获取系统上的总内存,然后在 -Xmx 中指定其中的 80-90%。

我的问题有什么解决办法吗?而且,我的解决方案听起来如何?

编辑:我无法减少内存消耗,因为正在使用的内存是 Java 的内置 pack200 压缩,我用它来打包一些 JAR 文件。

最佳答案

在 32 位窗口上 -XmX 的限制是 -Xmx1500m。共享库阻碍了更大的堆。您需要大约 2Gb 的 RAM 才能执行此操作。

在非 Windows 操作系统上,您可以做得更大,而 64 位 JVM 可以做得更多。

Windows XP 不会让您拥有超过 3Gb 的 RAM(不管您是否拥有 4Gb 物理内存,从 XP SP3 开始)Vista 可能与 YMMV 不同。

我已经在 64 位 Linux 上的 64 位 JVM 上尝试了 -Xmx4000M,它很好。考虑到我有 6Gb 的物理内存,这不是一个大要求。

您的 80% 想法很有趣,但我的测试系统运行的百分比比没有不良影响的要高。 (只要你不尝试做任何其他事情。)

另一位评论者是对的,分页出 JVM 的内存镜像并不快。后来的 JVM 在这方面做得更好(但他们也有更好的垃圾收集器)

如果你不能减少内存消耗——我知道这有多难——那么就拥有大量的物理内存并分配其中的大部分。

关于Java -Xmx,系统最大内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190837/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com