0
如何檢查Solaris 10上正在運行的進程正在使用的堆? pmap提供的信息,但我想看看堆的使用情況,我必須這樣做嗎?在Solaris 10上檢查正在運行的進程正在使用的堆
pmap | grep [heap]
如果我們想從在程序內編程知道,我們可以使用下面的命令:
struct mallinfo mallinfo(void);
的mallinfo()函數返回執行包含關於存儲器分配的信息的結構的副本通過malloc和相關函數。這種結構被定義如下:
struct mallinfo {
int arena; /* Non-mmapped space allocated (bytes) */
int ordblks; /* Number of free chunks */
int smblks; /* Number of free fastbin blocks */
int hblks; /* Number of mmapped regions */
int hblkhd; /* Space allocated in mmapped regions (bytes) */
int usmblks; /* Maximum total allocated space (bytes) */
int fsmblks; /* Space in freed fastbin blocks (bytes) */
int uordblks; /* Total allocated space (bytes) */
int fordblks; /* Total free space (bytes) */
int keepcost; /* Top-most, releasable space (bytes) */
};
這會不會是有幫助的知道我們有多少內存已分配(總內存分配 - 釋放作爲分配的內存淨總內存)?
如果你可以運行'dtrace',你可能會對[內存增長火焰圖]感興趣(http://www.brendangregg.com/FlameGraphs/memoryflamegraphs.html) –