我制作了一个服务器端应用程序,它使用 18mb 的非堆和大约 6mbs 的头部,最多 30mbs。我使用 -Xms 和 Xmx 设置堆的最大值,问题是当我在 ubuntu 服务器上运行程序时,它需要大约 170mbs,而不是 18+30 或至少 100Mbs 的最大值。有人知道如何让虚拟机只获得 100MB 吗?
最佳答案
JVM 使用堆、线程堆栈和共享库等其他内存。共享库可能相对较大,但除非实际使用,否则它们不会使用实际内存。如果您运行 JVM,它们会在它们之间共享,但您无法在进程信息中看到这一点。
在现代 PC 中,1 GB 内存的成本约为 100 美元,因此减少每一个 MB 的内存并不像以前那样重要。
关于Java内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6362708/