2015-09-07 58 views
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) */ 
     }; 

這會不會是有幫助的知道我們有多少內存已分配(總內存分配 - 釋放作爲分配的內存淨總內存)?

+0

如果你可以運行'dtrace',你可能會對[內存增長火焰圖]感興趣(http://www.brendangregg.com/FlameGraphs/memoryflamegraphs.html) –

回答

1

調查從<procfs.h>可用的功能可能是 你最好的選擇。

相關問題