这个问题可能更好地表达了:在VMware ESX等虚拟机管理程序上运行Java服务器如何影响Java堆?
从OS/hypervisor的角度来看,对JVM堆的访问是随机的
客户操作系统或管理程序很难优化随机访问的内存
鉴于此,管理程序是否可以检测JVM堆中未使用的页面?
Java服务器应用程序的传统观点是,如果在JVM启动时分配所有堆,而不是在需要时动态调整堆的大小,那么性能最佳.换句话说,如果将堆大小设置为1GB,则Java进程将获取1GB的连续虚拟地址空间(+二进制文件所需的任何内容),其他应用程序不再可用的内存.
VMware是否足够聪明,可以检测到某些堆实际上未使用过?这对GC性能有何影响?让堆在VMware中动态调整大小会更好吗?哪些GC策略最适合VMware来宾?
还有,有人会指出我在虚拟化环境中调整JVM堆的指导方针吗?
与我的问题相关:
这是一个PDF,它提供了在VMware guest虚拟机上运行Java的注意事项的广泛概述:链接文本