2016-09-01 58 views
4

我一直使用普通工具来确定我的PHP内存使用情况,以尝试检测内存泄漏,内存消耗等。最近我只看了下面的方法。PHP内存vs操作系统分配的内存

echo shell_exec(sprintf('grep "VmRSS:" /proc/%d/status', getmypid()))."\r\n"; 

这似乎是我可以真正使用的东西,但它提出了一个问题。 这个代码在不同的地方会产生预期的结果,尽管显示的内存分配比通过PHP更大。它仍然是不变的,反映了我的期望。

下面的代码让我感到困惑。我用VmPEAK替换了VmRSS,并且我获得了大量的内存数量。 400兆。这对ini文件中的max_memory设置没有影响,只有当我的正常内存检查显示超出限制时才会触发该限制,并且这通常很低,大约为50meg。我也无法理解该过程如何消耗400兆数据。

echo shell_exec(sprintf('grep "VmPEAK:" /proc/%d/status', getmypid()))."\r\n"; 

我正在用上面的命令看什么?它是预先分配的内存空间吗?

回答

2

从您的命令行运行man proc,您应该获得关于/proc/[pid]/status中的内容的大量细节。具体来说,因为它从你的约VmPeak和VmRSS问题涉及到PROC(5)

 
* VmPeak: Peak virtual memory size. 
* VmRSS: Resident set size. 

虚拟内存是棘手的,因为它不一定都是在物理内存中。有些虚拟内存可能会将该内存的其他部分放在磁盘上。大多数情况下,VmRSS是您通常关心的常驻内存,而VmPeak只是最大的虚拟内存大小(迄今为止该进程分配的最大虚拟内存量)。随着进程分配和取消分配内存,驻留内存大小将会增长和缩小,但VmPeak只会持续增长。

如果您想查看某个进程当前映射的内存区域的详细信息,您需要查看/proc/[pid]/maps或从* nix系统上的命令行使用pmap

因此,例如,要知道究竟什么部分的内存映射到这个PHP进程我们得到这样的东西从pmap

 
0000000000400000 8468K r-x-- php5 
0000000000e45000 644K r---- php5 
0000000000ee6000  52K rw--- php5 
0000000000ef3000 116K rw--- [ anon ] 
00000000015b9000 6404K rw--- [ anon ] 
00007f1b26796000  40K r-x-- libnss_files-2.21.so 
00007f1b267a0000 2048K ----- libnss_files-2.21.so 
00007f1b269a0000  4K r---- libnss_files-2.21.so 
00007f1b269a1000  4K rw--- libnss_files-2.21.so 
00007f1b269a2000  44K r-x-- libnss_nis-2.21.so 
00007f1b269ad000 2044K ----- libnss_nis-2.21.so 
00007f1b26bac000  4K r---- libnss_nis-2.21.so 
00007f1b26bad000  4K rw--- libnss_nis-2.21.so 
00007f1b26bae000  92K r-x-- libnsl-2.21.so 
00007f1b26bc5000 2044K ----- libnsl-2.21.so 
00007f1b26dc4000  4K r---- libnsl-2.21.so 
00007f1b26dc5000  4K rw--- libnsl-2.21.so 
00007f1b26dc6000  8K rw--- [ anon ] 
00007f1b26dc8000  32K r-x-- libnss_compat-2.21.so 
00007f1b26dd0000 2044K ----- libnss_compat-2.21.so 
00007f1b26fcf000  4K r---- libnss_compat-2.21.so 
00007f1b26fd0000  4K rw--- libnss_compat-2.21.so 
00007f1b26fd1000  28K r-x-- librt-2.21.so 
00007f1b26fd8000 2044K ----- librt-2.21.so 
00007f1b271d7000  4K r---- librt-2.21.so 
00007f1b271d8000  4K rw--- librt-2.21.so 
00007f1b271d9000 508K r-x-- libzmq.so.5.0.0 
00007f1b27258000 2044K ----- libzmq.so.5.0.0 
00007f1b27457000  20K r---- libzmq.so.5.0.0 
00007f1b2745c000  4K rw--- libzmq.so.5.0.0 
00007f1b2745d000  72K r-x-- zmq.so 
00007f1b2746f000 2044K ----- zmq.so 
00007f1b2766e000  4K r---- zmq.so 
00007f1b2766f000  4K rw--- zmq.so 
00007f1b27670000  4K rw--- [ anon ] 
00007f1b27671000  56K r-x-- libbsd.so.0.7.0 
00007f1b2767f000 2044K ----- libbsd.so.0.7.0 
00007f1b2787e000  4K r---- libbsd.so.0.7.0 
00007f1b2787f000  4K rw--- libbsd.so.0.7.0 
00007f1b27880000  4K rw--- [ anon ] 
00007f1b27881000 148K r-x-- libtinfo.so.5.9 
00007f1b278a6000 2044K ----- libtinfo.so.5.9 
00007f1b27aa5000  16K r---- libtinfo.so.5.9 
00007f1b27aa9000  4K rw--- libtinfo.so.5.9 
00007f1b27aaa000 196K r-x-- libedit.so.2.0.53 
00007f1b27adb000 2048K ----- libedit.so.2.0.53 
00007f1b27cdb000  8K r---- libedit.so.2.0.53 
00007f1b27cdd000  4K rw--- libedit.so.2.0.53 
00007f1b27cde000  16K rw--- [ anon ] 
00007f1b27ce2000  32K r-x-- readline.so 
00007f1b27cea000 2044K ----- readline.so 
00007f1b27ee9000  4K r---- readline.so 
00007f1b27eea000  4K rw--- readline.so 
00007f1b27eeb000  28K r-x-- pdo_mysql.so 
00007f1b27ef2000 2044K ----- pdo_mysql.so 
00007f1b280f1000  4K r---- pdo_mysql.so 
00007f1b280f2000  4K rw--- pdo_mysql.so 
00007f1b280f3000 120K r-x-- mysqli.so 
00007f1b28111000 2048K ----- mysqli.so 
00007f1b28311000  20K r---- mysqli.so 
00007f1b28316000  4K rw--- mysqli.so 
00007f1b28317000  44K r-x-- mysql.so 
00007f1b28322000 2044K ----- mysql.so 
00007f1b28521000  8K r---- mysql.so 
00007f1b28523000  4K rw--- mysql.so 
00007f1b28524000 196K r-x-- libmemcached.so.11.0.0 
00007f1b28555000 2044K ----- libmemcached.so.11.0.0 
00007f1b28754000  4K r---- libmemcached.so.11.0.0 
00007f1b28755000  4K rw--- libmemcached.so.11.0.0 
00007f1b28756000  84K r-x-- memcached.so 
00007f1b2876b000 2048K ----- memcached.so 
00007f1b2896b000  12K r---- memcached.so 
00007f1b2896e000  4K rw--- memcached.so 
00007f1b2896f000  92K r-x-- memcache.so 
00007f1b28986000 2048K ----- memcache.so 
00007f1b28b86000  4K r---- memcache.so 
00007f1b28b87000  4K rw--- memcache.so 
00007f1b28b88000  40K r-x-- libjson-c.so.2.0.0 
00007f1b28b92000 2044K ----- libjson-c.so.2.0.0 
00007f1b28d91000  4K r---- libjson-c.so.2.0.0 
00007f1b28d92000  4K rw--- libjson-c.so.2.0.0 
00007f1b28d93000  32K r-x-- json.so 
00007f1b28d9b000 2048K ----- json.so 
00007f1b28f9b000  4K r---- json.so 
00007f1b28f9c000  4K rw--- json.so 
00007f1b28f9d000  48K r-x-- libicuio.so.55.1 
00007f1b28fa9000 2044K ----- libicuio.so.55.1 
00007f1b291a8000  8K r---- libicuio.so.55.1 
00007f1b291aa000  4K rw--- libicuio.so.55.1 
00007f1b291ab000 2384K r-x-- libicui18n.so.55.1 
00007f1b293ff000 2044K ----- libicui18n.so.55.1 
00007f1b295fe000  60K r---- libicui18n.so.55.1 
00007f1b2960d000  4K rw--- libicui18n.so.55.1 
00007f1b2960e000 360K r-x-- intl.so 
00007f1b29668000 2044K ----- intl.so 
00007f1b29867000  24K r---- intl.so 
00007f1b2986d000  16K rw--- intl.so 
00007f1b29871000  4K rw--- [ anon ] 
00007f1b29872000 1076K r-x-- libglib-2.0.so.0.4600.2 
00007f1b2997f000 2044K ----- libglib-2.0.so.0.4600.2 
00007f1b29b7e000  4K r---- libglib-2.0.so.0.4600.2 
00007f1b29b7f000  4K rw--- libglib-2.0.so.0.4600.2 
00007f1b29b80000  4K rw--- [ anon ] 
00007f1b29b81000  36K r-x-- libltdl.so.7.3.0 
00007f1b29b8a000 2044K ----- libltdl.so.7.3.0 
00007f1b29d89000  4K r---- libltdl.so.7.3.0 
00007f1b29d8a000  4K rw--- libltdl.so.7.3.0 
00007f1b29d8b000  68K r-x-- libXext.so.6.4.0 
00007f1b29d9c000 2044K ----- libXext.so.6.4.0 
00007f1b29f9b000  4K r---- libXext.so.6.4.0 
00007f1b29f9c000  4K rw--- libXext.so.6.4.0 
00007f1b29f9d000 1960K r-x-- libfftw3.so.3.4.4 
00007f1b2a187000 2044K ----- libfftw3.so.3.4.4 
00007f1b2a386000  80K r---- libfftw3.so.3.4.4 
00007f1b2a39a000  4K rw--- libfftw3.so.3.4.4 
00007f1b2a39b000  92K r-x-- liblqr-1.so.0.3.2 
00007f1b2a3b2000 2044K ----- liblqr-1.so.0.3.2 
00007f1b2a5b1000  4K r---- liblqr-1.so.0.3.2 
00007f1b2a5b2000  4K rw--- liblqr-1.so.0.3.2 
00007f1b2a5b3000 328K r-x-- liblcms2.so.2.0.6 
00007f1b2a605000 2044K ----- liblcms2.so.2.0.6 
00007f1b2a804000  4K r---- liblcms2.so.2.0.6 
00007f1b2a805000  16K rw--- liblcms2.so.2.0.6 
00007f1b2a809000  4K rw--- [ anon ] 
00007f1b2a80a000 132K r-x-- libgomp.so.1.0.0 
00007f1b2a82b000 2044K ----- libgomp.so.1.0.0 
00007f1b2aa2a000  4K r---- libgomp.so.1.0.0 
00007f1b2aa2b000  4K rw--- libgomp.so.1.0.0 
00007f1b2aa2c000 2316K r-x-- libMagickCore-6.Q16.so.2.0.0 
00007f1b2ac6f000 2044K ----- libMagickCore-6.Q16.so.2.0.0 
00007f1b2ae6e000  80K r---- libMagickCore-6.Q16.so.2.0.0 
00007f1b2ae82000 252K rw--- libMagickCore-6.Q16.so.2.0.0 
00007f1b2aec1000 124K rw--- [ anon ] 
00007f1b2aee0000 1156K r-x-- libMagickWand-6.Q16.so.2.0.0 
00007f1b2b001000 2048K ----- libMagickWand-6.Q16.so.2.0.0 
00007f1b2b201000  4K r---- libMagickWand-6.Q16.so.2.0.0 
00007f1b2b202000  16K rw--- libMagickWand-6.Q16.so.2.0.0 
00007f1b2b206000 344K r-x-- imagick.so 
00007f1b2b25c000 2044K ----- imagick.so 
00007f1b2b45b000  40K r---- imagick.so 
00007f1b2b465000  24K rw--- imagick.so 
00007f1b2b46b000  64K r-x-- gmp.so 
00007f1b2b47b000 2048K ----- gmp.so 
00007f1b2b67b000  4K r---- gmp.so 
00007f1b2b67c000  4K rw--- gmp.so 
00007f1b2b67d000  20K r-x-- libXdmcp.so.6.0.0 
00007f1b2b682000 2044K ----- libXdmcp.so.6.0.0 
00007f1b2b881000  4K r---- libXdmcp.so.6.0.0 
00007f1b2b882000  4K rw--- libXdmcp.so.6.0.0 
00007f1b2b883000  8K r-x-- libXau.so.6.0.0 
00007f1b2b885000 2048K ----- libXau.so.6.0.0 
00007f1b2ba85000  4K r---- libXau.so.6.0.0 
00007f1b2ba86000  4K rw--- libXau.so.6.0.0 
00007f1b2ba87000 128K r-x-- libxcb.so.1.1.0 
00007f1b2baa7000 2044K ----- libxcb.so.1.1.0 
00007f1b2bca6000  4K r---- libxcb.so.1.1.0 
00007f1b2bca7000  4K rw--- libxcb.so.1.1.0 
00007f1b2bca8000  44K r-x-- libjbig.so.0 
00007f1b2bcb3000 2044K ----- libjbig.so.0 
00007f1b2beb2000  4K r---- libjbig.so.0 
00007f1b2beb3000  12K rw--- libjbig.so.0 
00007f1b2beb6000 132K r-x-- liblzma.so.5.0.0 
00007f1b2bed7000 2044K ----- liblzma.so.5.0.0 
00007f1b2c0d6000  4K r---- liblzma.so.5.0.0 
00007f1b2c0d7000  4K rw--- liblzma.so.5.0.0 
00007f1b2c0d8000 152K r-x-- libexpat.so.1.6.0 
00007f1b2c0fe000 2048K ----- libexpat.so.1.6.0 
00007f1b2c2fe000  8K r---- libexpat.so.1.6.0 
00007f1b2c300000  4K rw--- libexpat.so.1.6.0 
00007f1b2c301000 1236K r-x-- libX11.so.6.3.0 
00007f1b2c436000 2048K ----- libX11.so.6.3.0 
00007f1b2c636000  4K r---- libX11.so.6.3.0 
00007f1b2c637000  16K rw--- libX11.so.6.3.0 
00007f1b2c63b000 444K r-x-- libtiff.so.5.2.0 
00007f1b2c6aa000 2048K ----- libtiff.so.5.2.0 
00007f1b2c8aa000  4K r---- libtiff.so.5.2.0 
00007f1b2c8ab000  12K rw--- libtiff.so.5.2.0 
00007f1b2c8ae000 2036K r-x-- libvpx.so.2.0.0 
00007f1b2caab000 2048K ----- libvpx.so.2.0.0 
00007f1b2ccab000  8K r---- libvpx.so.2.0.0 
00007f1b2ccad000  4K rw--- libvpx.so.2.0.0 
00007f1b2ccae000  12K rw--- [ anon ] 
00007f1b2ccb1000 240K r-x-- libfontconfig.so.1.8.0 
00007f1b2cced000 2044K ----- libfontconfig.so.1.8.0 
00007f1b2ceec000  8K r---- libfontconfig.so.1.8.0 
00007f1b2ceee000  4K rw--- libfontconfig.so.1.8.0 
00007f1b2ceef000 640K r-x-- libfreetype.so.6.11.1 
00007f1b2cf8f000 2044K ----- libfreetype.so.6.11.1 
00007f1b2d18e000  24K r---- libfreetype.so.6.11.1 
00007f1b2d194000  4K rw--- libfreetype.so.6.11.1 
00007f1b2d195000 148K r-x-- libpng12.so.0.51.0 
00007f1b2d1ba000 2044K ----- libpng12.so.0.51.0 
00007f1b2d3b9000  4K r---- libpng12.so.0.51.0 
00007f1b2d3ba000  4K rw--- libpng12.so.0.51.0 
00007f1b2d3bb000 268K r-x-- libjpeg.so.8.0.2 
00007f1b2d3fe000 2048K ----- libjpeg.so.8.0.2 
00007f1b2d5fe000  4K r---- libjpeg.so.8.0.2 
00007f1b2d5ff000  4K rw--- libjpeg.so.8.0.2 
00007f1b2d600000  64K rw--- [ anon ] 
00007f1b2d610000  64K r-x-- libXpm.so.4.11.0 
00007f1b2d620000 2044K ----- libXpm.so.4.11.0 
00007f1b2d81f000  4K r---- libXpm.so.4.11.0 
00007f1b2d820000  4K rw--- libXpm.so.4.11.0 
00007f1b2d821000 268K r-x-- libgd.so.3.0.0 
00007f1b2d864000 2044K ----- libgd.so.3.0.0 
00007f1b2da63000  24K r---- libgd.so.3.0.0 
00007f1b2da69000 124K rw--- libgd.so.3.0.0 
00007f1b2da88000  20K rw--- [ anon ] 
00007f1b2da8d000  88K r-x-- gd.so 
00007f1b2daa3000 2048K ----- gd.so 
00007f1b2dca3000  20K r---- gd.so 
00007f1b2dca8000  4K rw--- gd.so 
00007f1b2dca9000  36K r-x-- libcrypt-2.21.so 
00007f1b2dcb2000 2044K ----- libcrypt-2.21.so 
00007f1b2deb1000  4K r---- libcrypt-2.21.so 
00007f1b2deb2000  4K rw--- libcrypt-2.21.so 
00007f1b2deb3000 184K rw--- [ anon ] 
00007f1b2dee1000 800K r-x-- libsqlite3.so.0.8.6 
00007f1b2dfa9000 2048K ----- libsqlite3.so.0.8.6 
00007f1b2e1a9000  8K r---- libsqlite3.so.0.8.6 
00007f1b2e1ab000  8K rw--- libsqlite3.so.0.8.6 
00007f1b2e1ad000  4K rw--- [ anon ] 
00007f1b2e1ae000 284K r-x-- libhx509.so.5.0.0 
00007f1b2e1f5000 2044K ----- libhx509.so.5.0.0 
00007f1b2e3f4000  8K r---- libhx509.so.5.0.0 
00007f1b2e3f6000  8K rw--- libhx509.so.5.0.0 
00007f1b2e3f8000  4K rw--- [ anon ] 
00007f1b2e3f9000  56K r-x-- libheimbase.so.1.0.0 
00007f1b2e407000 2044K ----- libheimbase.so.1.0.0 
00007f1b2e606000  4K r---- libheimbase.so.1.0.0 
00007f1b2e607000  4K rw--- libheimbase.so.1.0.0 
00007f1b2e608000 156K r-x-- libwind.so.0.0.0 
00007f1b2e62f000 2048K ----- libwind.so.0.0.0 
00007f1b2e82f000  4K r---- libwind.so.0.0.0 
00007f1b2e830000  4K rw--- libwind.so.0.0.0 
00007f1b2e831000  28K r-x-- libffi.so.6.0.4 
00007f1b2e838000 2044K ----- libffi.so.6.0.4 
00007f1b2ea37000  4K r---- libffi.so.6.0.4 
00007f1b2ea38000  4K rw--- libffi.so.6.0.4 
00007f1b2ea39000  80K r-x-- libroken.so.18.1.0 
00007f1b2ea4d000 2044K ----- libroken.so.18.1.0 
00007f1b2ec4c000  4K r---- libroken.so.18.1.0 
00007f1b2ec4d000  4K rw--- libroken.so.18.1.0 
00007f1b2ec4e000 192K r-x-- libhcrypto.so.4.1.0 
00007f1b2ec7e000 2048K ----- libhcrypto.so.4.1.0 
00007f1b2ee7e000  4K r---- libhcrypto.so.4.1.0 
00007f1b2ee7f000  4K rw--- libhcrypto.so.4.1.0 
00007f1b2ee80000  4K rw--- [ anon ] 
00007f1b2ee81000 636K r-x-- libasn1.so.8.0.0 
00007f1b2ef20000 2048K ----- libasn1.so.8.0.0 
00007f1b2f120000  4K r---- libasn1.so.8.0.0 
00007f1b2f121000  12K rw--- libasn1.so.8.0.0 
00007f1b2f124000 528K r-x-- libkrb5.so.26.0.0 
00007f1b2f1a8000 2044K ----- libkrb5.so.26.0.0 
00007f1b2f3a7000  12K r---- libkrb5.so.26.0.0 
00007f1b2f3aa000  12K rw--- libkrb5.so.26.0.0 
00007f1b2f3ad000  4K rw--- [ anon ] 
00007f1b2f3ae000  32K r-x-- libheimntlm.so.0.1.0 
00007f1b2f3b6000 2044K ----- libheimntlm.so.0.1.0 
00007f1b2f5b5000  4K r---- libheimntlm.so.0.1.0 
00007f1b2f5b6000  4K rw--- libheimntlm.so.0.1.0 
00007f1b2f5b7000  12K r-x-- libkeyutils.so.1.5 
00007f1b2f5ba000 2044K ----- libkeyutils.so.1.5 
00007f1b2f7b9000  4K r---- libkeyutils.so.1.5 
00007f1b2f7ba000  4K rw--- libkeyutils.so.1.5 
00007f1b2f7bb000  68K r-x-- libtasn1.so.6.4.2 
00007f1b2f7cc000 2048K ----- libtasn1.so.6.4.2 
00007f1b2f9cc000  4K r---- libtasn1.so.6.4.2 
00007f1b2f9cd000  4K rw--- libtasn1.so.6.4.2 
00007f1b2f9ce000 360K r-x-- libp11-kit.so.0.1.0 
00007f1b2fa28000 2044K ----- libp11-kit.so.0.1.0 
00007f1b2fc27000  40K r---- libp11-kit.so.0.1.0 
00007f1b2fc31000  8K rw--- libp11-kit.so.0.1.0 
00007f1b2fc33000 240K r-x-- libgssapi.so.3.0.0 
00007f1b2fc6f000 2048K ----- libgssapi.so.3.0.0 
00007f1b2fe6f000  4K r---- libgssapi.so.3.0.0 
00007f1b2fe70000  8K rw--- libgssapi.so.3.0.0 
00007f1b2fe72000  4K rw--- [ anon ] 
00007f1b2fe73000 104K r-x-- libsasl2.so.2.0.25 
00007f1b2fe8d000 2044K ----- libsasl2.so.2.0.25 
00007f1b3008c000  4K r---- libsasl2.so.2.0.25 
00007f1b3008d000  4K rw--- libsasl2.so.2.0.25 
00007f1b3008e000  40K r-x-- libkrb5support.so.0.1 
00007f1b30098000 2044K ----- libkrb5support.so.0.1 
00007f1b30297000  4K r---- libkrb5support.so.0.1 
00007f1b30298000  4K rw--- libkrb5support.so.0.1 
00007f1b30299000  12K r-x-- libcom_err.so.2.1 
00007f1b3029c000 2044K ----- libcom_err.so.2.1 
00007f1b3049b000  4K r---- libcom_err.so.2.1 
00007f1b3049c000  4K rw--- libcom_err.so.2.1 
00007f1b3049d000 176K r-x-- libk5crypto.so.3.1 
00007f1b304c9000 2044K ----- libk5crypto.so.3.1 
00007f1b306c8000  8K r---- libk5crypto.so.3.1 
00007f1b306ca000  4K rw--- libk5crypto.so.3.1 
00007f1b306cb000  4K rw--- [ anon ] 
00007f1b306cc000 780K r-x-- libkrb5.so.3.3 
00007f1b3078f000 2048K ----- libkrb5.so.3.3 
00007f1b3098f000  52K r---- libkrb5.so.3.3 
00007f1b3099c000  8K rw--- libkrb5.so.3.3 
00007f1b3099e000 504K r-x-- libgmp.so.10.2.0 
00007f1b30a1c000 2048K ----- libgmp.so.10.2.0 
00007f1b30c1c000  4K r---- libgmp.so.10.2.0 
00007f1b30c1d000  4K rw--- libgmp.so.10.2.0 
00007f1b30c1e000 208K r-x-- libnettle.so.6.1 
00007f1b30c52000 2044K ----- libnettle.so.6.1 
00007f1b30e51000  8K r---- libnettle.so.6.1 
00007f1b30e53000  4K rw--- libnettle.so.6.1 
00007f1b30e54000 196K r-x-- libhogweed.so.4.1 
00007f1b30e85000 2048K ----- libhogweed.so.4.1 
00007f1b31085000  4K r---- libhogweed.so.4.1 
00007f1b31086000  4K rw--- libhogweed.so.4.1 
00007f1b31087000 1092K r-x-- libgnutls-deb0.so.28.41.7 
00007f1b31198000 2048K ----- libgnutls-deb0.so.28.41.7 
00007f1b31398000  36K r---- libgnutls-deb0.so.28.41.7 
00007f1b313a1000  8K rw--- libgnutls-deb0.so.28.41.7 
00007f1b313a3000 312K r-x-- libldap_r-2.4.so.2.10.4 
00007f1b313f1000 2044K ----- libldap_r-2.4.so.2.10.4 
00007f1b315f0000  8K r---- libldap_r-2.4.so.2.10.4 
00007f1b315f2000  4K rw--- libldap_r-2.4.so.2.10.4 
00007f1b315f3000  8K rw--- [ anon ] 
00007f1b315f5000  52K r-x-- liblber-2.4.so.2.10.4 
00007f1b31602000 2048K ----- liblber-2.4.so.2.10.4 
00007f1b31802000  4K r---- liblber-2.4.so.2.10.4 
00007f1b31803000  4K rw--- liblber-2.4.so.2.10.4 
00007f1b31804000 284K r-x-- libgssapi_krb5.so.2.2 
00007f1b3184b000 2044K ----- libgssapi_krb5.so.2.2 
00007f1b31a4a000  8K r---- libgssapi_krb5.so.2.2 
00007f1b31a4c000  8K rw--- libgssapi_krb5.so.2.2 
00007f1b31a4e000 108K r-x-- librtmp.so.1 
00007f1b31a69000 2044K ----- librtmp.so.1 
00007f1b31c68000  8K r---- librtmp.so.1 
00007f1b31c6a000  4K rw--- librtmp.so.1 
00007f1b31c6b000 196K r-x-- libidn.so.11.6.11 
00007f1b31c9c000 2048K ----- libidn.so.11.6.11 
00007f1b31e9c000  4K r---- libidn.so.11.6.11 
00007f1b31e9d000  4K rw--- libidn.so.11.6.11 
00007f1b31e9e000 428K r-x-- libcurl.so.4.3.0 
00007f1b31f09000 2048K ----- libcurl.so.4.3.0 
00007f1b32109000  12K r---- libcurl.so.4.3.0 
00007f1b3210c000  4K rw--- libcurl.so.4.3.0 
00007f1b3210d000  80K r-x-- curl.so 
00007f1b32121000 2044K ----- curl.so 
00007f1b32320000  8K r---- curl.so 
00007f1b32322000  4K rw--- curl.so 
00007f1b32323000 104K r-x-- pdo.so 
00007f1b3233d000 2044K ----- pdo.so 
00007f1b3253c000  12K r---- pdo.so 
00007f1b3253f000  4K rw--- pdo.so 
00007f1b32540000 248K r-x-- mysqlnd.so 
00007f1b3257e000 2048K ----- mysqlnd.so 
00007f1b3277e000  16K r---- mysqlnd.so 
00007f1b32782000  8K rw--- mysqlnd.so 
00007f1b32784000  4K rw--- [ anon ] 
00007f1b32785000  12K r-x-- libfuzzy.so.2.1.0 
00007f1b32788000 2048K ----- libfuzzy.so.2.1.0 
00007f1b32988000  4K r---- libfuzzy.so.2.1.0 
00007f1b32989000  4K rw--- libfuzzy.so.2.1.0 
00007f1b3298a000  8K r-x-- ssdeep.so 
00007f1b3298c000 2044K ----- ssdeep.so 
00007f1b32b8b000  4K r---- ssdeep.so 
00007f1b32b8c000  4K rw--- ssdeep.so 
00007f1b32b8d000 144K r-x-- opcache.so 
00007f1b32bb1000 2048K ----- opcache.so 
00007f1b32db1000  4K r---- opcache.so 
00007f1b32db2000  4K rw--- opcache.so 
00007f1b32db3000  32K rw--- [ anon ] 
00007f1b32dbb000 7048K r---- locale-archive 
00007f1b3349d000  88K r-x-- libgcc_s.so.1 
00007f1b334b3000 2044K ----- libgcc_s.so.1 
00007f1b336b2000  4K r---- libgcc_s.so.1 
00007f1b336b3000  4K rw--- libgcc_s.so.1 
00007f1b336b4000 1484K r-x-- libstdc++.so.6.0.21 
00007f1b33827000 2044K ----- libstdc++.so.6.0.21 
00007f1b33a26000  40K r---- libstdc++.so.6.0.21 
00007f1b33a30000  8K rw--- libstdc++.so.6.0.21 
00007f1b33a32000  16K rw--- [ anon ] 
00007f1b33a36000 25304K r-x-- libicudata.so.55.1 
00007f1b352ec000 2044K ----- libicudata.so.55.1 
00007f1b354eb000  4K r---- libicudata.so.55.1 
00007f1b354ec000  4K rw--- libicudata.so.55.1 
00007f1b354ed000 1532K r-x-- libicuuc.so.55.1 
00007f1b3566c000 2048K ----- libicuuc.so.55.1 
00007f1b3586c000  64K r---- libicuuc.so.55.1 
00007f1b3587c000  4K rw--- libicuuc.so.55.1 
00007f1b3587d000  16K rw--- [ anon ] 
00007f1b35881000  96K r-x-- libpthread-2.21.so 
00007f1b35899000 2048K ----- libpthread-2.21.so 
00007f1b35a99000  4K r---- libpthread-2.21.so 
00007f1b35a9a000  4K rw--- libpthread-2.21.so 
00007f1b35a9b000  16K rw--- [ anon ] 
00007f1b35a9f000 1792K r-x-- libc-2.21.so 
00007f1b35c5f000 2048K ----- libc-2.21.so 
00007f1b35e5f000  16K r---- libc-2.21.so 
00007f1b35e63000  8K rw--- libc-2.21.so 
00007f1b35e65000  16K rw--- [ anon ] 
00007f1b35e69000 1716K r-x-- libxml2.so.2.9.2 
00007f1b36016000 2048K ----- libxml2.so.2.9.2 
00007f1b36216000  32K r---- libxml2.so.2.9.2 
00007f1b3621e000  8K rw--- libxml2.so.2.9.2 
00007f1b36220000  4K rw--- [ anon ] 
00007f1b36221000  12K r-x-- libdl-2.21.so 
00007f1b36224000 2044K ----- libdl-2.21.so 
00007f1b36423000  4K r---- libdl-2.21.so 
00007f1b36424000  4K rw--- libdl-2.21.so 
00007f1b36425000 1052K r-x-- libm-2.21.so 
00007f1b3652c000 2044K ----- libm-2.21.so 
00007f1b3672b000  4K r---- libm-2.21.so 
00007f1b3672c000  4K rw--- libm-2.21.so 
00007f1b3672d000 432K r-x-- libpcre.so.3.13.1 
00007f1b36799000 2048K ----- libpcre.so.3.13.1 
00007f1b36999000  4K r---- libpcre.so.3.13.1 
00007f1b3699a000  4K rw--- libpcre.so.3.13.1 
00007f1b3699b000  60K r-x-- libbz2.so.1.0.4 
00007f1b369aa000 2044K ----- libbz2.so.1.0.4 
00007f1b36ba9000  4K r---- libbz2.so.1.0.4 
00007f1b36baa000  4K rw--- libbz2.so.1.0.4 
00007f1b36bab000 1688K r-x-- libdb-5.3.so 
00007f1b36d51000 2044K ----- libdb-5.3.so 
00007f1b36f50000  28K r---- libdb-5.3.so 
00007f1b36f57000  4K rw--- libdb-5.3.so 
00007f1b36f58000 376K r-x-- libssl.so.1.0.0 
00007f1b36fb6000 2048K ----- libssl.so.1.0.0 
00007f1b371b6000  16K r---- libssl.so.1.0.0 
00007f1b371ba000  28K rw--- libssl.so.1.0.0 
00007f1b371c1000 2152K r-x-- libcrypto.so.1.0.0 
00007f1b373db000 2044K ----- libcrypto.so.1.0.0 
00007f1b375da000 112K r---- libcrypto.so.1.0.0 
00007f1b375f6000  48K rw--- libcrypto.so.1.0.0 
00007f1b37602000  12K rw--- [ anon ] 
00007f1b37605000  92K r-x-- libresolv-2.21.so 
00007f1b3761c000 2048K ----- libresolv-2.21.so 
00007f1b3781c000  4K r---- libresolv-2.21.so 
00007f1b3781d000  4K rw--- libresolv-2.21.so 
00007f1b3781e000  8K rw--- [ anon ] 
00007f1b37820000 100K r-x-- libz.so.1.2.8 
00007f1b37839000 2044K ----- libz.so.1.2.8 
00007f1b37a38000  4K r---- libz.so.1.2.8 
00007f1b37a39000  4K rw--- libz.so.1.2.8 
00007f1b37a3a000 144K r-x-- ld-2.21.so 
00007f1b37aa4000 1648K rw--- [ anon ] 
00007f1b37c53000  28K r--s- gconv-modules.cache 
00007f1b37c5a000  12K rw--- [ anon ] 
00007f1b37c5d000  4K r---- ld-2.21.so 
00007f1b37c5e000  4K rw--- ld-2.21.so 
00007f1b37c5f000  4K rw--- [ anon ] 
00007ffd41bf5000 132K rw--- [ stack ] 
00007ffd41c29000  8K r---- [ anon ] 
00007ffd41c2b000  8K r-x-- [ anon ] 
ffffffffff600000  4K r-x-- [ anon ] 
total   298912K 

你可以从这里这个单一过程看起来像它消耗的内存298M,但是很多该内存可以在其他PHP进程之间在大多数情况下共享见。

让我们来看看这个输出的详细分解......

第一列是分配给存储区(内存该区域的第一个字节的偏移量)的虚拟内存地址,十六进制表示法。第二列是内存段的大小。第三列是为该内存段设置的权限(*就像典型的拥有Owner/Group/World的nix文件系统权限 - 读/写/执行权限)。然后是区域名称,可以是任何内容,如共享对象库,共享内存段或匿名分配的内存段。需要注意的是,其中一些内存段实际上可以被多个进程共享。

您将从PHP的memory_get_usagememory_get_peak_usage函数获得的大小将只包含为您的PHP代码分配的内部内存,而不一定是PHP进程在系统上分配的任何内存。

根据SAPI,PHP分配和释放内存的方式非常棘手。例如,在一个类似mod_php或php-fpm的Web SAPI中,可以有多个PHP进程共享加载的库(这些类似于加载到PHP中的pdo/curl/dom扩展),也可以静态编译。所以这个系统因系统而异。 PHP也为Web SAPI中的每个工作人员保留了堆内存,从模块初始化阶段到关闭阶段,这意味着多个请求可以使内存与系统绑定,但在PHP内部,对于您的代码,它看起来像可用。这主要是出于性能原因而完成的,因为分配内存是一个昂贵的过程。

但是,PHP的优点在于,您通常不必过多地关心内存管理,因为它几乎总是具有理智的默认值,并为您管理内存非常好。一些扩展代码可能会管理自己的内存,但是如果它通过PHP内存管理器,您可以放心,PHP将始终尽可能有效地利用内存。