如何解决“堆”在哪里?
| 我只想知道cat /proc/16457/maps
结果中bash进程的堆(pid = 16457)在哪里(如果存在!)
0078a000-007a0000 r-xp 00000000 08:02 1319336 /lib/ld-2.3.4.so
007a0000-007a1000 r--p 00015000 08:02 1319336 /lib/ld-2.3.4.so
007a1000-007a2000 rw-p 00016000 08:02 1319336 /lib/ld-2.3.4.so
007a9000-008cf000 r-xp 00000000 08:02 1384495 /lib/tls/libc-2.3.4.so
008cf000-008d1000 r--p 00125000 08:02 1384495 /lib/tls/libc-2.3.4.so
008d1000-008d3000 rw-p 00127000 08:02 1384495 /lib/tls/libc-2.3.4.so
008d3000-008d5000 rw-p 008d3000 00:00 0
008fc000-008fe000 r-xp 00000000 08:02 1319337 /lib/libdl-2.3.4.so
008fe000-008ff000 r--p 00001000 08:02 1319337 /lib/libdl-2.3.4.so
008ff000-00900000 rw-p 00002000 08:02 1319337 /lib/libdl-2.3.4.so
00b27000-00b2a000 r-xp 00000000 08:02 278109 /lib/libtermcap.so.2.0.8
00b2a000-00b2b000 rw-p 00002000 08:02 278109 /lib/libtermcap.so.2.0.8
08047000-080d8000 r-xp 00000000 08:02 902412 /bin/bash
080d8000-080de000 rw-p 00090000 08:02 902412 /bin/bash
080de000-080e3000 rw-p 080de000 00:00 0
09ceb000-09d25000 rw-p 09ceb000 00:00 0
b7d99000-b7d9b000 rw-p b7d99000 00:00 0
b7d9b000-b7da1000 r--s 00000000 08:02 130808 /usr/lib/gconv/gconv-modules.cache
b7da1000-b7dd6000 r--s 00000000 08:02 869910 /var/db/nscd/passwd
b7dd6000-b7fd6000 r--p 00000000 08:02 101088 /usr/lib/locale/locale-archive
b7fd6000-b7fd8000 rw-p b7fd6000 00:00 0
bff07000-c0000000 rw-p bff07000 00:00 0
ffffe000-fffff000 r-xp 00000000 00:00 0
解决方法
大多数人指的“ The”堆是这一行:
080de000-080e3000 rw-p 080de000 00:00 0
即它是紧随主程序的.data
和.bss
段之后由brk
syscall创建和扩展的内存区域。
可能还会将以下内容视为“堆”的一部分:
09ceb000-09d25000 rw-p 09ceb000 00:00 0
似乎是mmap
创建的匿名映射,用于响应较大的malloc
请求。大多数malloc
实现将mmap
用于大型请求,因此他们可以在free
上使其munmap
,并将整个内存块返回给OS。由于可以确保您以这种方式获得按零填充的页面,因此它也使速度提高了13倍。
, 在当前的Linux版本中,堆明显标记为“ 14”。您的商家信息未显示。您确定将其复制到您的问题中时不会意外剪掉吗?
在我的外壳上:
~% grep \'\\[heap\' /proc/$$/maps
00bca000-00d2e000 rw-p 00000000 00:00 0 [heap]
, 调用malloc调用时,堆通常看起来带有[heap]标记;但是,您会注意到,如果继续使用多行malloc()代码来增大堆,则范围将不会增大;但是,将创建新的空白行条目。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。