【发布时间】:2021-07-31 15:10:51
【问题描述】:
我们有一个具有 32 GB RAM 的 Linux 服务器。因此,服务器中分配的默认堆大小是 1/4,即 8 GB。 java -XX:+PrintFlagsFinal -version | grep HeapSize
现在,我们在服务器中运行了 3 个 java 进程。
所需的最大堆大小(-Xmx)
进程 1 = 4 GB
进程 2 = 4 GB
进程 3 = 2 GB
所以最大堆大小的总和变为 10 GB,大于服务器的最大堆大小 8 GB。
这样分配最大堆大小可以吗?这会导致将来出现任何问题吗?
【问题讨论】:
-
服务器没有“堆”。它有记忆。
-
哦,好的。这是我在执行
java -XX:+PrintFlagsFinal -version | grep HeapSize时在Linux 服务器uintx MaxHeapSize := 8311013376中看到的。因此,我认为这是服务器允许的最大堆大小。如果我错了,请纠正我。 -
报告 JVM 的实际最大堆大小。见stackoverflow.com/questions/26631498/understanding-java-heap。 (即使它是允许的最大堆大小,它仍然是 JVM 堆大小......与硬件或操作系统无关。操作系统不知道进程对其内存做了什么。)
-
知道了@Stephan C!谢谢 ! :) 现在我明白了。
标签: java linux memory jvm heap-memory