0
我有,我想很快看到它是多少堆的使用使我實現了這兩個小程序爲什麼sbrk()告訴我我使用了多少堆?
static void * start_memory = 0;
unsigned long System::memoryUsage(){
void * here = sbrk(0);
return (char*) here - (char*) start_memory;
}
void System::startMemoryUsage(){
start_memory = sbrk(0);
}
我打電話startMemoryUsage()遊戲引擎很早就在我的main()。當我在運行時使用它時,我通常會看到相對較低的值,例如300kb,但頂部表示RSS大約在30mb左右。我怎麼沒有從sbrk()中獲得準確的測量結果?
我猜它與線程有關。遊戲引擎產生5個線程(+主要是6個),它處理輸入和音樂等事情。難道主線程真的在使用300kb,但其他線程總共爲30MB?
有沒有一種方法可以通過編程來計算mmap佔用的所有內存? – jonr
@jonr:讀取和解析/ proc/self/smaps – SoapBox
大多數malloc都有'malloc.h'中定義的'mallinfo'函數,它允許您查詢關於內存使用情況的統計信息。只有在測試之後(作爲你的配置/構建腳本的一部分),你才應該小心使用它,它存在...... –