<?php$t = memory_get_usage();
// 3125000$i = 1;
$a[$i] = $i;$i = 1111111111;
$a[$i] = $i;$i = '1';
$a[$i] = $i;$i = '111111111111111111111111111';
$a[$i] = $i;
echo memory_get_usage()-$t;?>请问如何计算出各个占用了多少内存的。谢谢各位拉。
// 3125000$i = 1;
$a[$i] = $i;$i = 1111111111;
$a[$i] = $i;$i = '1';
$a[$i] = $i;$i = '111111111111111111111111111';
$a[$i] = $i;
echo memory_get_usage()-$t;?>请问如何计算出各个占用了多少内存的。谢谢各位拉。
像字符串的那个,111111111111111111111111111的比上面1用的内存多。
不知为何。就不知道php是怎么分配的啊。
这种问题你要参考laruence大牛怎么说的。http://www.laruence.com/2011/03/04/1894.htmlhttp://www.laruence.com/2011/11/09/2277.html
==================================================================================
光这句话就说明很多问题了。系统调用还是个专业词,得理解什么是系统调用,进程的用户态,内核态。为什么频繁的系统调用需要避免。同样的, 在我们调用efree释放内存的时候, PHP也不会把内存还给OS, 而会把这块内存, 归入自己维护的空闲内存列表. 而对于小块内存来说, 更可能的是, 把它放到内存缓存列表中去(后记, 某些版本的PHP, 比如我验证过的PHP5.2.4, 5.2.6, 5.2.8, 在调用get_memory_usage()的时候, 不会减去内存缓存列表中的可用内存块大小, 导致看起来, unset以后内存不变, 见评论).
===============================================================================
memory_get_usage()并不能真实得到内存分配量。我当初看这些东西也是云山雾罩的,多晕几次就慢慢懂点东西了。
而 php 的变量应该是一个结构队列,每个每一项都应至少包括:变量名称、类型、值指针、是否是引用....
这才是我们需要关心的,而他是如何维护这张表的。却不是很重要
变量存储
http://www.laruence.com/2008/08/22/412.html
变量分离引用
http://www.laruence.com/2008/09/19/520.htmllaruence现在已经是php开发组成员了,说不定以后某个版本的php的某个特性就是他实现的,他说的东西还是比较权威的。
sina云什么有时候真慢。大半天打不开。
我还在折腾那排序。昨晚又搞到3点多=_=
想用php位图来排序,但耗太大内存。
现在想方法优化。晚点再贴代码上来。