关于php中数组跟内存的管理
程序员文章站
2022-05-26 09:47:54
...
关于php中数组和内存的管理
按手册上说的,php除了object外,其他类型的变量在赋值、参数传递、返回值中得到都是它的副本
但是看下面的测试,不知道是因为测试方法有问题,还是说如果没有用&按引用传递的时候还是共享同一部分内存,但是在改变它的元素以后才真正生成了一份副本出来?
------解决方案--------------------
不是很清楚你的目标是什么?
空的 $data 占用: 496
1000 个空元素的 $data 占用: 84200
1000 个$t元素的 $data 占用: 52104
1000 个实体元素的 $data 占用: 356136
这样可能清楚些
------解决方案--------------------
哈希表
------解决方案--------------------
php的变量是写时复制的
看看这篇文章:http://www.laruence.com/2008/09/19/520.html
按手册上说的,php除了object外,其他类型的变量在赋值、参数传递、返回值中得到都是它的副本
但是看下面的测试,不知道是因为测试方法有问题,还是说如果没有用&按引用传递的时候还是共享同一部分内存,但是在改变它的元素以后才真正生成了一份副本出来?
------解决方案--------------------
不是很清楚你的目标是什么?
m = 0;$t 占用: 360
$m = memory_get_usage();
$t = array('id' => 1, 'name' => 'none');
echo '$t 占用: ', memory_get_usage() - $m, PHP_EOL;
$data = array();
echo '空的 $data 占用: ', memory_get_usage() - $m, PHP_EOL;
$m = memory_get_usage();
for($i=0; $i $data[] = null;
}
echo '1000 个空元素的 $data 占用: ', memory_get_usage() - $m, PHP_EOL;
$data = array();
$m = memory_get_usage();
for($i=0; $i $data[] = $t;
}
echo '1000 个$t元素的 $data 占用: ', memory_get_usage() - $m, PHP_EOL;
$data = array();
$m = memory_get_usage();
for($i=0; $i $data[] = array('id' => 1, 'name' => 'none');
}
echo '1000 个实体元素的 $data 占用: ', memory_get_usage() - $m, PHP_EOL;
空的 $data 占用: 496
1000 个空元素的 $data 占用: 84200
1000 个$t元素的 $data 占用: 52104
1000 个实体元素的 $data 占用: 356136
这样可能清楚些
------解决方案--------------------
哈希表
------解决方案--------------------
php的变量是写时复制的
看看这篇文章:http://www.laruence.com/2008/09/19/520.html
相关文章
相关视频