我一直使用常规工具来确定我的PHP内存使用情况,以尝试检测内存泄漏,内存消耗等。最近才查看以下方法。
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";
我用上述命令究竟看到了什么?它是预先分配的内存空间吗?
答案 0 :(得分:2)
从命令行运行man proc
,您应该获得有关/proc/[pid]/status
中的内容的大量详细信息。特别是因为它与您关于VmPeak和VmRSS的问题中的 proc(5)有关:
* VmPeak: Peak virtual memory size. * VmRSS: Resident set size.
虚拟内存很棘手,因为它并非都在物理内存中。某些虚拟内存可能,该内存的其他部分可能在磁盘上。大多数情况下,VmRSS是您通常关心的驻留内存,而VmPeak只是峰值虚拟内存大小(此过程到目前为止已分配的最大虚拟内存量)。当进程分配和取消分配内存时,驻留内存大小会增大和缩小,但VmPeak只会增长。
如果要查看有关进程的当前映射内存区域的详细信息,您需要在* nix系统上查看/proc/[pid]/maps
或从命令行使用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进程中共享大多数情况。
让我们来看看这个输出的详细分类......
第一列是分配给内存区域的虚拟内存地址(该区域内存的第一个字节的偏移量),采用十六进制表示法。第二列是内存段的大小。第三列是为该内存段设置的权限(*就像典型的 nix文件系统权限与所有者/组/世界 - 读/写/执行权限)。然后是区域名称,可以是任何东西,如共享对象库,共享内存段或匿名分配的内存段。值得注意的是,其中一些内存段实际上可以由多个进程共享。
您将从PHP的memory_get_usage
和memory_get_peak_usage
函数获得的大小,仅包括为PHP代码分配的内部内存,而不包括PHP进程在系统上分配的任何内存。 / p>
根据SAPI,PHP分配和释放内存的方式很棘手。例如,在一个像SAP_php或php-fpm这样的Web SAPI中,可以有多个PHP进程共享加载的库(这些类似于加载到PHP中的pdo / curl / dom扩展),或者它们可以静态编译。所以这在不同系统之间有所不同。 PHP还为从模块初始化阶段到关闭阶段的Web SAPI中的每个单独工作者保留堆内存,这意味着多个请求可以使内存与系统保持联系,但在PHP内部,对于您的代码,它看起来像是可用的。这主要是出于性能原因而完成的,因为分配内存是一个昂贵的过程。
PHP的优点在于您通常不必过多担心内存管理,因为它几乎总是具有合理的默认值并且很好地管理内存。一些扩展代码可以管理自己的内存,但如果它通过PHP内存管理器,你可以放心,PHP将始终尽可能高效地使用你的内存。