gpt4 book ai didi

linux - 为什么某个进程会多次加载 lib?

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:26 25 4
gpt4 key购买 nike

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

为什么这些so lib加载的时间比more time还多?需要吗?为什么?

最佳答案

实际上,每个库只加载一次;您看到的是每个库使用的多个内存区域

库包含代码、rodata 和数据 (+bss)。代码是只读和可执行的(r-x),rodata是只读的(r--),数据(和bss)是可读写的(rw-)。这些是您正在查看的内存段(请注意,它们都有不同的内存保护标志和大小)。并非所有库都具有所有这些段,因此您会看到一些库仅映射了两个(甚至一个)内存区域。

请注意,pmap 的“总”输出仅测量虚拟内存利用率(即使对于小进程,它也可能非常高)。对于物理内存使用,请使用 pmap -x 并查看 RSS(驻留集大小)。

关于linux - 为什么某个进程会多次加载 lib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12524500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com