2016-12-24 30 views
0

我的啓動服務器在64G內存的機器上運行。總緩存佔用大約20G內存(堆內存,我在使用後使用cache -a命令獲得此信息),但是當我運行top命令查看內存使用情況,看起來這個進程佔用了50G內存,我會問這怎麼會發生?Ignite服務器的內存使用情況

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

有人可以看看嗎?我想知道如何知道點擊服務器除了緩存之外還有多少內存。 – Tom

+0

什麼是offheap配置和堆使用情況? –

+0

感謝@Mitya的回覆。我只用堆。配置如下:'cacheConfig.setCacheMode(CacheMode.PARTITIONED); cacheConfig.setBackups(0); cacheConfig.setMemoryMode(CacheMemoryMode.OFFHEAP_TIERED); cacheConfig.setOffHeapMaxMemory(0); cacheConfig.setOffHeapMaxMemory(48 * 1024 * 1024 * 1024);' – Tom

回答

0

差由JVM消耗。這可能是很多事情 - 由Ignite提供的開銷(任何Java應用程序使用堆內存,Ignite僅將實際數據移至堆外),數據處理(例如查詢)產生的對象,最終由GC收集的垃圾,等等。爲了更深入的理解,你應該使用堆轉儲並分析消耗堆內存的內容。

+0

謝謝@Valentin,我會做更多的調查。 – Tom