2011-08-03 49 views
3

在嵌入式中,我們經常聽像低腳印庫這樣的詞。我如何知道我的.so庫的佔用空間?

所以我怎麼知道我的library.so或library.a文件的足跡? 我如何計算

是否與該庫的內存大小相同?

+1

請定義「足跡」。你的意思是加載包含該庫的可執行文件所消耗的內存?你是指任何給定的圖書館例程的最大活動堆?還有別的嗎? –

+0

我想知道通過加載包含該庫的可執行文件消耗的內存..&我認爲對於任何給定的庫例程,最大的實時堆是由pmap - (該應用程序使用該庫的進程ID)在linux中看到的 –

回答

1

找出內存佔用空間的唯一真正原因是運行使用該庫的可執行文件並查看它是如何使用它的。可執行文件通常只使用庫的一個子集。例如,一個庫可能有一個列表,當客戶端將另一個項目推送到列表中時,該列表保存由庫動態創建的對象。推送到列表的項目越多,庫消耗的內存就越多。

通過查看procfs,您可以看到進程消耗了多少內存(堆和其他方式):cat/proc // mem

ps aux」也會給你虛擬內存大小(VSZ)。

+2

虛擬大小是寧可無意義的。您應該查看'/ proc/$ pid/smaps'並檢查庫和它之後的匿名映射的映射。這將是圖書館的代碼,數據和bss。對於每個人來說,要特別注意實際居民的數量,也許更重要的是,多少錢是**。這是實際的內存使用情況,不僅僅是磁盤上常量數據的高速緩存副本(如果內存變得緊張,可以丟棄和重新加載該副本)。 –

+0

okey現在重約.a圖書館.. ??? –

相關問題