我的点火服务器在64G内存的机器上运行。总缓存占用大约20G内存(堆外内存,我在启动cache -a
后使用ignitevisorcmd.sh
命令获取此信息),但是当我运行top
命令查看内存使用情况时,看起来这个进程占用了50G内存,我会问这怎么会发生?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10001 root 20 0 63.1G 51G 15m S 70% 80% 400:57.38 java
答案 0 :(得分:1)
JVM消耗的差异。这可能是很多事情 - Ignite提供的开销(任何Java应用程序使用堆内存,Ignite仅将实际数据移动到堆外),数据处理产生的对象(例如查询),最终将由GC收集的垃圾,为了更深入地理解,你应该进行堆转储并分析消耗堆内存的内容。