我的啓動服務器在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
我的啓動服務器在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
差由JVM消耗。這可能是很多事情 - 由Ignite提供的開銷(任何Java應用程序使用堆內存,Ignite僅將實際數據移至堆外),數據處理(例如查詢)產生的對象,最終由GC收集的垃圾,等等。爲了更深入的理解,你應該使用堆轉儲並分析消耗堆內存的內容。
謝謝@Valentin,我會做更多的調查。 – Tom
有人可以看看嗎?我想知道如何知道點擊服務器除了緩存之外還有多少內存。 – Tom
什麼是offheap配置和堆使用情況? –
感謝@Mitya的回覆。我只用堆。配置如下:'cacheConfig.setCacheMode(CacheMode.PARTITIONED); cacheConfig.setBackups(0); cacheConfig.setMemoryMode(CacheMemoryMode.OFFHEAP_TIERED); cacheConfig.setOffHeapMaxMemory(0); cacheConfig.setOffHeapMaxMemory(48 * 1024 * 1024 * 1024);' – Tom