Home  >  Article  >  Backend Development  >  奇怪的现象:恒量的创建过程

奇怪的现象:恒量的创建过程

WBOY
WBOYOriginal
2016-06-13 13:18:29796browse

奇怪的现象:常量的创建过程

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php var_dump( memory_get_usage() );  // int(129100)
var_dump( memory_get_usage() );  // int(129156)  - 很难理解,这里为什么会有内存增加?
var_dump( memory_get_usage() );  // int(129156)
define('hello', 'WORLD');
var_dump( memory_get_usage() );  // int(129156)   - 既然创建了一个常量,就该有内存增加。
$hello = 'WORLD';
var_dump( memory_get_usage() );  // int(129304)


------解决方案--------------------
看这个吧:
http://www.laruence.com/2011/03/04/1894.html

php和C那样的底层语言是不一样的,它本身更象一个小系统
------解决方案--------------------
我的执行结果是
int(51312)
int(51424)
int(51424)
int(51480)
int(51480)

我觉得讨论单条语句所花的内存没有意义。内存的分配实际上都是分段的,也就是即使你需要1个字节的内存,实际分配有可能是32个字节或者1024个字节,取决于分配策略,因为这样就不需要每次使用每次分配,一个变量所花的内存一般按照一个字母一个字节近似计算一下即可,很难精确计算。

另外var_dump这个函数本身会输出字符串,这个字符串是不是也需要内存,这取决于内部实现。为什么有的时候运行会增加内存有的时候内存不变,那就是因为前次分配多出来的内存是否够用的问题,如果够用就不需要增加,如果不够用就要增加。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn