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