今天通过top查看系统信息,发现系统启动的一个进程内存占用达900M之多
top - 11:30:26 up 167 days, 40 min, 1 user, load average: 1.09, 0.96, 1.02
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 30.6% us, 3.2% sy, 0.0% ni, 65.2% id, 0.8% wa, 0.1% hi, 0.1% si
Mem: 4151368k total, 4146780k used, 4588k free, 6108k buffers
Swap: 8191968k total, 2892428k used, 5299540k free, 1272624k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7293 collect 17 0 909m 333m 28m S 0.0 8.2 0:31.77 java
但是,程序设置的xmx才512M,按理说应该抛出 java.lang.OutOfMemory 才是,可是程序却正常运行
到网上搜下,终于找到答案,原来top显示的内存大小包含jvm占用的,也就是说上面的 909m = jvm占用+java进程占用