我试图了解一些 php 进程的内存使用情况。我试过同时使用get_memory_usage()
和pmap
,但结果似乎相差了大约一个数量级。我已经尝试过memory_get_usage()
和memory_get_usage(true)
,以及memory_get_peak_usage(true)
,但即使使用memory_get_peak_usage(true)
(所有三个品种中最大的一个),通过 pmap 报告的内容仍然很大。
更具体地说,memory_get_peak_usage(true)
在我的 php 脚本中调用每一分钟会返回 1.75MB 到 3.5MB 之间的值,而典型的结果pmap -d PID
如下:
...
b7839000 4 r---- 0000000000008000 0ca:00060 libcrypt-2.11.1.so
b783a000 4 rw--- 0000000000009000 0ca:00060 libcrypt-2.11.1.so
b783b000 156 rw--- 0000000000000000 000:00000 [ anon ]
b7864000 8 rw--- 0000000000000000 000:00000 [ anon ]
b7867000 12 r-x-- 0000000000000000 0ca:00060 libgpg-error.so.0.4.0
b786a000 4 r---- 0000000000002000 0ca:00060 libgpg-error.so.0.4.0
b786b000 4 rw--- 0000000000003000 0ca:00060 libgpg-error.so.0.4.0
b786c000 4 r---- 0000000000000000 000:00000 [ anon ]
b786d000 16 rw--- 0000000000000000 000:00000 [ anon ]
b7871000 108 r-x-- 0000000000000000 0ca:00060 ld-2.11.1.so
b788c000 4 r---- 000000000001a000 0ca:00060 ld-2.11.1.so
b788d000 4 rw--- 000000000001b000 0ca:00060 ld-2.11.1.so
bffc7000 136 rw--- 0000000000000000 000:00000 [ stack ]
f57fe000 4 r-x-- 0000000000000000 000:00000 [ anon ]
mapped: 32740K writeable/private: 13116K shared: 28K
如果我理解正确,可写/私有数字是最相关的数字,因为它是进程专用的内存。近 13MB 与 .com 报告的数量相差甚远memory_get_peak_usage(true)
。有人可以解释差异吗?