什么会导致Java进程大大超过Xmx或Xss的限制?
我有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忽略(或者在这种情况下似乎忽略)内存限制?