作用:查看程序被映射到內(nèi)存中的映像所占用的大小信息。
程序映射到內(nèi)存中,從低地址到高地址依次為下列段:
代碼段: 只讀,可共享; 代碼段(code segment/text segment )通常是指用來存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域。這部分區(qū)域的大小在程序運(yùn)行前就已經(jīng)確定,并且內(nèi)存區(qū)域通常屬于只讀, 某些架構(gòu)也允許代碼段為可寫,即允許修改程序。在代碼段中,也有可能包含一些只讀的常數(shù)變量,例如字符串常量等。
數(shù)據(jù)段: 儲(chǔ)存已被初始化了的靜態(tài)數(shù)據(jù)。數(shù)據(jù)段(data segment )通常是指用來存放程序中已初始化的全局變量的一塊內(nèi)存區(qū)域。數(shù)據(jù)段屬于靜態(tài)內(nèi)存分配。
BSS 段:未初始化的數(shù)據(jù)段. BSS 段(bss segment )通常是指用來存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域。BSS 是英文Block Started by Symbol 的簡(jiǎn)稱。BSS 段屬于靜態(tài)內(nèi)存分配。
堆(heap ): 堆是用于存放進(jìn)程運(yùn)行中被動(dòng)態(tài)分配的內(nèi)存段,它的大小并不固定,可動(dòng)態(tài)擴(kuò)張或縮減。當(dāng)進(jìn)程調(diào)用malloc 等函數(shù)分配內(nèi)存時(shí),新分配的內(nèi)存就被動(dòng)態(tài)添加到堆上(堆被擴(kuò)張);當(dāng)利用free 等函數(shù)釋放內(nèi)存時(shí),被釋放的內(nèi)存從堆中被剔除(堆被縮減)
另外, 在高地址還儲(chǔ)存了命令行參數(shù)及環(huán)境變量.
因?yàn)閮?nèi)存程序映像中的各段可能位于不同的地址空間中, 它們不一定位于連續(xù)的內(nèi)存塊中. 操作系統(tǒng)將程序映像映射到地址空間時(shí), 通常將內(nèi)存程序映像劃分為大小相同的塊(也就是page, 頁(yè)). 只有該頁(yè)被引用時(shí), 它才被加載到內(nèi)存中. 不過對(duì)于程序員來說, 可以視內(nèi)存程序映像在邏輯上是連續(xù)的.
/opt/app/todeav1/colin/tests#size main
text data bss dec hex filename
1259 540 16 1815 717 main
關(guān)于程序內(nèi)存映像,這篇文章講的很好:http://blog.chinaunix.net/uid-9012903-id-2011435.html