内存管理

PHP首次echo会让内存使用量增加x字节

始于群友提出的一个问题 <?php $m1 = memory_get_usage(); echo 'm1:' . $m1; $arr1 = []; for($i = 0; $i < 1000000; $i++){ $arr1[] = $i; } unset($i); echo PHP_EOL; $m2 = memory_get_usage(); echo 'm2:' . $m2; $arr2 = $arr1; echo PHP_EOL; echo 'm2-m1:' . ($m2 - $m1); echo PHP_EOL; $m3 = memory_get_usage(); echo 'm3:' . $m3; echo PHP_EOL; echo 'm3-m2:' . ($m3 - $m2); $arr3 = []; foreach ($arr2 as $key => $value) { $arr3[] = $value; } // unset($m1,$m2); $m4 = memory_get_usage(); echo PHP_EOL; echo 'm4:' . $m4; echo PHP_EOL; echo 'm4-m3:' . ($m4-$m3); 这段代码的输出如下,为什么(m4-m3)比(m2-m1)少32字节? m1:38841...

golang之内存管理make

介绍 读《network programming with golang》这本书,墙裂推荐。读这本书之前我并没有系统的学过这门语言。读到第十章,Dictionary内存分配的代码让我觉得有些困惑,为什么一个定义长度为100的数组不会越界 问题 书中代码如下 v := make([]*Entry, 0, 100) for n := 0; n < len(d.Entries); n++ { de := d.Entries[n] if de.Pinyin == py { v = append(v, de) } } 这段代码,看起来就是在最初创建了一个长度为100的数组,而后不断的通过append给它添加新的元素。添加多少个元素是不确定的,那么如果添加101个元素,会不会index of range呢? 实验 带着这个问题我做了如下实验。实验代码如下 package main import "fmt" func main(){ array := make([]int, 0, 10) // 越界错误: index out of range //array[0] = 1 // ok 可以访问 array = array[0:1] array[0] = 1 // 越界错误: in...
执行时间: 33.689975738525 毫秒