Java 獲取記憶體使用情況

2021-08-16 09:36:30 字數 1303 閱讀 9043

公司要求將各個裝置上傳的資料分析並且匯出到統一的乙個表中,目前在準備,資料比較多,所以需要考慮到記憶體的使用情況,經網上查詢使用,出現了以下問題。

logutils.debug("totalmemory", runtime.getruntime().totalmemory()/(1024*1024)+"m");

logutils.debug("freememory", runtime.getruntime().freememory()/(1024*1024)+"m");

logutils.debug("maxmemory", runtime.getruntime().maxmemory()/(1024*1024)+"m");

logutils.debug("usedmemory", (runtime.getruntime().totalmemory() - runtime.getruntime().freememory())/(1024*1024)+"m");

當然,獲取資料是獲取到了,但是發現totalmemory與freememory會變化,感覺這個有問題,所以繼續查詢,搜到了以下一種方式。

memorymxbean memorymxbean = managementfactory.getmemorymxbean();

memoryusage memoryusage = memorymxbean.getheapmemoryusage(); //椎記憶體使用情況

long totalmemorysize = memoryusage.getinit(); //初始的總記憶體

long maxmemorysize = memoryusage.getmax(); //最大可用記憶體

long usedmemorysize = memoryusage.getused(); //已使用的記憶體

logutils.debug("totalmemory", totalmemorysize/(1024*1024)+"m");

logutils.debug("freememory", (totalmemorysize-usedmemorysize)/(1024*1024)+"m");

logutils.debug("maxmemory", maxmemorysize/(1024*1024)+"m");

logutils.debug("usedmemory", usedmemorysize/(1024*1024)+"m");

第二種方法獲取到的總記憶體不會變化,是我想要的。

那麼,問題來了,為什麼第一中獲取總記憶體會變化呢?我猜可能與執行時情況有關,但被什麼用了,就不清楚了,希望得到大神的解答

PHP獲取記憶體使用情況

php內建函式memory get usage 能返回當前分配給php指令碼的記憶體量,單位是位元組 byte 在web實際開發中,這些函式非常有用,我們可以使用它來除錯php 效能。memory get usage 函式返回記憶體使用量,memory get peak usage 函式返回記憶體使...

c 獲取程序記憶體使用情況

直接看 吧,不過有點亂,細心看下吧 processmemory.cpp 定義控制台應用程式的入口點。include stdafx.h 用法 argv 1 是子程序的包含路徑的完整可執行檔名 processmemory notepad 06.07.編譯 08.cl processmemory.cpp ...

Linux 記憶體使用情況

linux系統如何檢視使用記憶體情況 root r2 free total used free shared buffers cached mem 215608 142680 72928 0 19736 86956 buffers cache 35988 179620 swap 1052248 0 ...