gpt4 book ai didi

Java 虚拟内存大小大于请求(或要求)

转载 作者:IT王子 更新时间:2023-10-28 23:34:06 24 4
gpt4 key购买 nike

我在计算集群上运行许多作业,当它们超过请求的资源使用量时它们被杀死 - 其中一种用途是虚拟内存大小。

在我的 java 启动命令中,我使用 -Xmx8000m 来指示初始堆栈大小为 8GB,我还没有看到我的程序的实际内存使用量超过 4GB,但为了安全起见.

但是,当我使用 top 命令时,我看到我的 java 进程的虚拟内存大小为 12GB - 这正好处于请求的虚拟内存空间的限制。我无法增加我请求的 VM 大小,因为作业已经提交,而且我请求的次数越多,安排它们所需的时间就越长。

Java 是否始终请求比指定更多的 VM 堆空间?这是一个恒定的数量,还是一个恒定的百分比或随机的?堆空间是否可以增长到 a) 请求的 VM 大小 (8GB) 或 b) 分配的 VM 大小 (12GB)。

编辑:在 Linux 上使用 jre-1.7.0-openjdk

最佳答案

这篇文章很好的分析了这个问题:Why does my Java process consume more memory than Xmx它的作者提供了这个近似公式:

Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss]

But besides the memory consumed by your application, the JVM itself also needs some elbow room. - Garbage collection. - JIT optimization. - Off-heap allocations. - JNI code. - Metaspace.

但要小心,因为它可能取决于平台和 JVM 供应商/版本。

关于Java 虚拟内存大小大于请求(或要求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211088/

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