巨大的数组占用的内存空间比应有的多

时间:2012-08-11 23:30:46

标签: php arrays memory

目前我的应用程序使用大约7 MB内存。

如果我使用strlen(serialize($array))))检查大小,则数组似乎使用700 KB。

  • 如果在我的应用中使用此数组,并检查内存使用情况(使用memory_get_peak_usage()),我会获得14 MB。

  • 如果我不使用它,我会得到7 MB。

如果此数组需要700 KB序列化,为什么PHP需要7 MB这个变量?或者我是以错误的方式做基准测试?

2 个答案:

答案 0 :(得分:10)

如果这困扰你,你想避开PHP:http://nikic.github.com/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html。 PHP数组就像一些生存空间。

如果可能,您可以使用SplFixedArray,但是再次关心PHP数组占用的空间。如果你正在寻找干净/性能的东西,为什么你首先使用PHP(是的,这来自一个PHP人):))

答案 1 :(得分:1)

序列化格式可以进行一些内存优化,因为它们不需要将对象存在于内存中并使其具有完全可访问性。它们只保留数据的完整性,而不是它的可访问性。如果这有助于回答你的问题。