相关疑难解决方法(0)

这些内存区域来自Linux进程?

我发现我的一个进程(~90个线程)使用> 8G内存,我不认为它需要这么大.

因此,我读了/proc/{pid}/maps,/proc/{pid}/smapspstack {pid}.我想知道那些大的63M + 508K区域是如何产生的,它们的用途是什么,我可以通过某种方式减少我的内存使用量吗?

我发现这些地区几乎分为三类:

  1. 4xxx000-4xxxx000:线程堆栈?
  2. 313xxxx000-313xxxx000:lib文本和数据?
  3. 2xxxxxxxx000-2xxxxxxxx000:许多令人困惑的(64M+...+63M+508K)块.这种区域的数量非常接近线程的数量.这些与线程相关的大区域也是如此吗?

下面是结果后,我合并的结果/proc/{pid}/mapspstack {pid} | grep Thread:

(*Thread ?? (Thread 0x@@@@@@@@@@ (LWP !!!!))*如果0x@@@@@@@@位于这个区域内,我将它放在每个区域的末尾(我猜@@@@是线程堆栈基础,因此该区域是线程堆栈的.)

Region   0:     18M, 00400000-01675000 r-xp 00000000 08:02 5401                               /mybinary
Region   1:    236K, 01875000-018b0000 rw-p 01275000 08:02 5401                               /mybinary
Region   2:    456K, 018b0000-01922000 rw-p 018b0000 00:00 0 
Region   3:    741M, 11b46000-4006c000 rw-p 11b46000 00:00 0                                  [heap]
Region …
Run Code Online (Sandbox Code Playgroud)

linux memory

6
推荐指数
1
解决办法
1504
查看次数

标签 统计

linux ×1

memory ×1