此问题可能是更好的表述:在VMware ESX等管理程序上运行Java服务器如何影响Java堆?VMware客户机中的JVM堆大小
- 访问JVM堆是从OS /管理程序透视随机
- 这是很难为客户OS或管理程序来优化存储器是随机访问
- 鉴于此,可以在管理程序检测在未使用的页JVM堆?
Java服务器应用程序的传统观点是,如果您在JVM启动时分配所有堆,而不是在需要时允许堆动态调整大小,则性能最好。换句话说,如果将堆大小设置为1GB,则Java进程将获取1GB的连续虚拟地址空间(无论二进制文件需要什么),即其他应用程序不再可用的内存。
VMware是否足够聪明地检测到堆中的一些实际上未被使用?这如何影响GC性能?在VMware中让堆动态调整大小会更好吗?什么GC策略与VMware客户最好地协作?另外,如果任何人都可以指出我在虚拟化环境中调整JVM堆的指导原则,我会非常感激。