0
b7f27000 84K r-x-- /lib/libpthread-2.5.so
b7f3c000 4K ----- /lib/libpthread-2.5.so
b7f3d000 4K r---- /lib/libpthread-2.5.so
b7f3e000 4K rw--- /lib/libpthread-2.5.so
b7f3f000 8K rw--- [ anon ]
b7f41000 88K r-x-- /lib/libselinux.so.1
b7f57000 8K rw--- /lib/libselinux.so.1
b7f59000 256K r-x-- /usr/lib/libncurses.so.5.5
b7f99000 32K rw--- /usr/lib/libncurses.so.5.5
b7fa1000 8K rw--- [ anon ]
b7fa3000 4K r---- /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
b7fa4000 4K r---- /usr/lib/locale/en_US.utf8/LC_PAPER
b7fa5000 4K r---- /usr/lib/locale/en_US.utf8/LC_NAME
b7fa6000 4K r---- /usr/lib/locale/en_US.utf8/LC_ADDRESS
b7fa7000 4K r---- /usr/lib/locale/en_US.utf8/LC_TELEPHONE
b7fa8000 4K r---- /usr/lib/locale/en_US.utf8/LC_MEASUREMENT
b7fa9000 4K r---- /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION
b7faa000 108K r-x-- /lib/ld-2.5.so
b7fc5000 4K r---- /lib/ld-2.5.so
b7fc6000 4K rw--- /lib/ld-2.5.so
bf96f000 228K rw--- [ stack ]
total 23740K
爲什麼這些lib會被加載多於多次?是需要的嗎?爲什麼?爲什麼這樣的lib被某個進程加載了一次以上?
您可以添加代碼段不會多次加載,因爲內核只有一個代碼段副本 –
實際上,代碼段可能被映射爲MAP_PRIVATE(而不是'MAP_SHARED'),但是使用COW語義。這允許鏈接程序在代碼段中執行重定位,隻影響其加載的可執行文件(因爲重定位取決於加載庫的位置)。所以,從技術上講,代碼段可能不會被共享。 – nneonneo
有趣 - 爲什麼代碼部分也需要寫出來? –