我的输出结果:
368272
184
160
160
352
关于memory_get_usage问题,如果有处理过C指针,内存调用或者汇编的经验就很好理解。
memory_get_usage,可以检测到内存的位置,你们当他是一个自动搜索器
368272 :
你定义的变量值肯定要有地方保存,不然cpu怎么知道在哪吧,对吧。当然系统肯定不会让我们自己去
保存变量的,太麻烦而且容易会修改一些数据出错。
我们用memory_get_usage()检测了一下内存,系统就知道发现我们内存是从368272开始的。
echo $m1 = memory_get_usage();
368272简单说就是你存放变量值或者php中数据的开始,转换为16进制就是5000:9E90这个内存开始。
我们把这个开始的内存地址命名为m1。
$var_string = "123";
我们定义了字符串”123“对吧,这时候这个字符串被保存到我们前面定义的内存m1地址中了,这些操
作是系统自动的,我们并没有操作他。
原来的内存地址为368272,我们加入了一个字符串,内存肯定被占用了一些对吧。这就和向一个杯子
倒水(字符串)一样,水的位置肯定增加改变吧,这样我们的内存就被消耗了一些了。
原来的内存为368272,根据输出结果后面为184,我们可以知道占用了184的内存,m1+184=368456,所
以368456是现在内存的位置了。
184 :
$m2 = memory_get_usage()-$m1;
m2就很简单了,我们用memory_get_usage()又检测一下内存得出是368456,我们用 m2=368456-m1(368272)=184。出来了吧,这就是184的来历,也是m2的值。
后面的160、160、352也是一样的。
自己赞自己,有积分不?