- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发互联网家庭网关(openwrt,64 位)。当我执行 top 时,我发现 UPNPD 进程正在分配大量虚拟内存:
Mem: 239096K used, 215584K free, 0K shrd, 9652K buff, 39256K cached
CPU: 0% usr 0% sys 0% nic 100% idle 0% io 0% irq 0% sirq
Load average: 0.36 0.41 0.39 1/93 10104
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
2196 930 root S 394m 89% 0% upnpd -f -r
--> 约394m--> 可以达到1G!!!
当我执行 pmap pidof upnpd
时,我发现有大块:
# pmap 2196
0000000000400000 88K r-xp /usr/sbin/upnpd
0000000000426000 4K rw-p /usr/sbin/upnpd
0000000000427000 4K rw-p [ anon ]
0000000036d6e000 140K rw-p [heap]
0000007f78000000 132K rw-p [ anon ]
**0000007f78021000 65404K ---p [ anon ]**
0000007f80000000 2596K rw-p [ anon ]
0000007f80289000 62940K ---p [ anon ]
0000007f84000000 132K rw-p [ anon ]
0000007f84021000 65404K ---p [ anon ]
0000007f88000000 132K rw-p [ anon ]
0000007f88021000 65404K ---p [ anon ]
0000007f8c000000 132K rw-p [ anon ]
0000007f8c021000 65404K ---p [ anon ]
0000007f90000000 132K rw-p [ anon ]
0000007f90021000 65404K ---p [ anon ]
0000007f95adb000 4K ---p [ anon ]
0000007f95adc000 124K rw-p [ anon ]
0000007f95afb000 4K ---p [ anon ]
0000007f95afc000 124K rw-p [stack:2249]
0000007f95b1b000 4K ---p [ anon ]
0000007f95b1c000 124K rw-p [stack:2248]
0000007f95b3b000 4K ---p [ anon ]
0000007f95b3c000 1020K rw-p [ anon ]
0000007f95c3b000 4K ---p [ anon ]
0000007f95c3c000 1020K rw-p [stack:2246]
0000007f95d3b000 4K ---p [ anon ]
0000007f95d3c000 1020K rw-p [stack:2245]
0000007f95e3b000 4K ---p [ anon ]
0000007f95e3c000 1020K rw-p [stack:2244]
0000007f95f3b000 4K ---p [ anon ]
0000007f95f3c000 1020K rw-p [stack:2243]
0000007f9603b000 4K ---p [ anon ]
0000007f9603c000 1020K rw-p [stack:2242]
0000007f9613b000 4K ---p [ anon ]
0000007f9613c000 1020K rw-p [ anon ]
0000007f9623b000 4K ---p [ anon ]
0000007f9623c000 1020K rw-p [stack:2240]
0000007f9633b000 1220K r-xp /lib/libc-2.22.so
0000007f9646c000 60K ---p /lib/libc-2.22.so
0000007f9647b000 16K r--p /lib/libc-2.22.so
0000007f9647f000 8K rw-p /lib/libc-2.22.so
0000007f96481000 16K rw-p [ anon ]
0000007f96485000 84K r-xp /usr/lib/libgsdf.so.1.0.0
0000007f9649a000 60K ---p /usr/lib/libgsdf.so.1.0.0
0000007f964a9000 4K rw-p /usr/lib/libgsdf.so.1.0.0
0000007f964aa000 16K rw-p [ anon ]
0000007f964ae000 16K r-xp /usr/lib/libthreadutil.so.6.0.3
0000007f964b2000 64K ---p /usr/lib/libthreadutil.so.6.0.3
0000007f964c2000 4K rw-p /usr/lib/libthreadutil.so.6.0.3
0000007f964c3000 32K r-xp /usr/lib/libixml.so.2.0.8
0000007f964cb000 64K ---p /usr/lib/libixml.so.2.0.8
0000007f964db000 4K rw-p /usr/lib/libixml.so.2.0.8
0000007f964dc000 120K r-xp /usr/lib/libupnp.so.6.3.2
0000007f964fa000 64K ---p /usr/lib/libupnp.so.6.3.2
0000007f9650a000 4K rw-p /usr/lib/libupnp.so.6.3.2
0000007f9650b000 8K rw-p [ anon ]
0000007f9650d000 92K r-xp /lib/libpthread-2.22.so
0000007f96524000 60K ---p /lib/libpthread-2.22.so
0000007f96533000 4K r--p /lib/libpthread-2.22.so
0000007f96534000 4K rw-p /lib/libpthread-2.22.so
0000007f96535000 16K rw-p [ anon ]
0000007f96539000 112K r-xp /lib/ld-2.22.so
0000007f9655f000 16K rw-p [ anon ]
0000007f96563000 4K r--p [vvar]
0000007f96564000 4K r-xp [vdso]
0000007f96565000 4K r--p /lib/ld-2.22.so
0000007f96566000 8K rw-p /lib/ld-2.22.so
0000007fd72dd000 132K rw-p [stack]
供您引用,Upnpd 进程根据连接的客户端创建线程。我注意到对于创建的每个线程,都会映射一个 65404K 的 block ,例如:0000007f90021000 65404K ---p [anon]
问题:1- 这些集团的含义是什么?2- 为什么我们为每个线程映射这些 block ?3- 为什么在终止线程时,这些 block 仍然映射?
最佳答案
pmap
使用 proc
文件系统获取信息。下面是来自 man proc
关于 /proc/[pid]/maps
文件:
What are the meaning of these blocs?
如果路径名字段为空,则这是通过 mmap(2) 函数获得的匿名 映射。除了通过 gdb(1)、strace(1) 或类似工具运行它之外,没有简单的方法将其协调回进程的源。
地址域是映射占用的进程中的地址空间。 perms 字段是一组权限:
r = read
w = write
x = execute
s = shared
p = private (copy on write)
所以看起来程序在它的每个线程中从堆中分配内存。
关于c - [anon]在pmap linux cmd中意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43321478/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!