我有 7 个不同的 Java 守护程序,我在 3 个不同的服务器上运行(全部 7 个)。java命令行有-Xmx2048m和-Xss1024k。在这 3 台服务器上,所有 21 个进程的顶部和顶部的 VIRT 大小均显示为略低于 2.5 GB。RES 大小从 300 GB 到 1.9 GB 不等,具体取决于它是哪个守护进程。
这就是它应该的样子。
输入新服务器。更快的 CPU,更多的 RAM(16 GB 而不是 8 GB),稍微更新的 java(旧服务器上的 1.6.0_10-b33,新服务器上的 1.6.0_31-b04)。两个系统(和 JVM)都是 64 位的。
将 2 个守护进程移至新服务器。在新服务器上,给定相同的任务,守护进程既消耗大量 CPU(大约相当于一个内核的价值),又完成得更少。(从旧系统上的 5110 处理器移至新系统上的 5620)。
几乎是一个完整的额外核心 CPU 使用率(GC 线程??),一个守护进程报告 5 GB VIRT 和 2 GB RES,另一个守护进程报告 10.5 GB VIRT 和 2 GB RES。
有什么想法会导致java忽略(或者如果是这种情况的话似乎忽略)内存限制?