我使用该命令procstat -r $(pidof myprocess)
并得到以下输出...
PID COMM RESOURCE VALUE
84867 myprocess user time 00:00:12.637834
84867 myprocess system time 00:00:06.671334
84867 myprocess maximum RSS 11400 KB
84867 myprocess integral shared memory 1931920 KB
84867 myprocess integral unshared data 28272 KB
84867 myprocess integral unshared stack 301568 KB
84867 myprocess page reclaims 653
84867 myprocess page faults 0
...
我有点担心巨大的价值
84867 myprocess integral shared memory 1 931 920 KB
84867 myprocess integral unshared data 28 272 KB
84867 myprocess integral unshared stack 301 568 KB
这三个术语是什么意思?
htop
给我关于内存的不错的值(VIRT等)。
我应该担心内存泄漏吗?
答案1
这没有很好的记录,也让我感到困惑。
integral shared memory
、integral unshared data
和状态integral unshared stack
是运行计数器,而不是当前使用情况的快照。它们无限增加是正常的。它们并不表示内存泄漏。
看http://www.khmere.com/freebsd_book/html/ch07.html有关每个字段数据的准确描述。
答案2
其中integral shared memory
包括您的程序所链接的每个共享库的code
和段。rodata
这个近 2GB 的数字很大,但如果它是像浏览器这样的大型应用程序,那就不足为奇了。非共享段是由程序分配的数据,包括来自共享库的读/写数据页等。如果这些数据没有惊人地增加(或者更糟,没有限制),那么您可能没问题。