这个问题的措辞可能更好:在 VMware ESX 等管理程序上运行 Java 服务器如何影响 Java 堆?
- 从操作系统/管理程序的角度来看,对 JVM 堆的访问是随机的
- guest 操作系统或管理程序很难优化随机访问的内存
- 鉴于此,管理程序能否检测到 JVM 堆中未使用的页面?
Java 服务器应用程序的传统观点认为,如果您在 JVM 启动时分配所有堆,而不是允许堆在需要时动态调整大小,则性能最佳。换句话说,如果您将堆大小设置为 1GB,您的 Java 进程将获取 1GB 的连续虚拟地址空间(加上二进制文件所需的任何内容),其他应用程序不再可用的内存。
VMware 是否足够聪明,可以检测到其中一些堆实际上未被使用?这对 GC 性能有何影响?让堆在 VMware 中动态调整大小会更好吗?哪些 GC 策略最适合 VMware guest ?
此外,有人能给我指出在虚拟化环境中调整 JVM 堆的指南吗?
最佳答案
与我的问题相关:
这是一个 PDF,它提供了在 VMware guest 上运行 Java 的注意事项的广泛概述:link text
关于java - VMware guest 中的 JVM 堆大小调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439777/