memory_get_usage
我的輸出結(jié)果:
368272
184
160
160
352
? 關(guān)于memory_get_usage問(wèn)題,如果有處理過(guò)C指針,內(nèi)存調(diào)用或者匯編的經(jīng)驗(yàn)就很好理解。
? memory_get_usage,可以檢測(cè)到內(nèi)存的位置,你們當(dāng)他是一個(gè)自動(dòng)搜索器
?? ?
? 368272? :
? 你定義的變量值肯定要有地方保存,不然cpu怎么知道在哪吧,對(duì)吧。當(dāng)然系統(tǒng)肯定不會(huì)讓我們自己去
保存變量的,太麻煩而且容易會(huì)修改一些數(shù)據(jù)出錯(cuò)。
? 我們用memory_get_usage()檢測(cè)了一下內(nèi)存,系統(tǒng)就知道發(fā)現(xiàn)我們內(nèi)存是從368272開(kāi)始的。
? echo $m1 = memory_get_usage();
? 368272簡(jiǎn)單說(shuō)就是你存放變量值或者php中數(shù)據(jù)的開(kāi)始,轉(zhuǎn)換為16進(jìn)制就是5000:9E90這個(gè)內(nèi)存開(kāi)始。
我們把這個(gè)開(kāi)始的內(nèi)存地址命名為m1。
? $var_string = "123"; ?
? 我們定義了字符串”123“對(duì)吧,這時(shí)候這個(gè)字符串被保存到我們前面定義的內(nèi)存m1地址中了,這些操
作是系統(tǒng)自動(dòng)的,我們并沒(méi)有操作他。
? 原來(lái)的內(nèi)存地址為368272,我們加入了一個(gè)字符串,內(nèi)存肯定被占用了一些對(duì)吧。這就和向一個(gè)杯子
倒水(字符串)一樣,水的位置肯定增加改變吧,這樣我們的內(nèi)存就被消耗了一些了。
? 原來(lái)的內(nèi)存為368272,根據(jù)輸出結(jié)果后面為184,我們可以知道占用了184的內(nèi)存,m1+184=368456,所
以368456是現(xiàn)在內(nèi)存的位置了。
?? ?
? 184? :
? $m2 = memory_get_usage()-$m1; ?
? m2就很簡(jiǎn)單了,我們用memory_get_usage()又檢測(cè)一下內(nèi)存得出是368456,我們用 m2=368456-m1(368272)=184。出來(lái)了吧,這就是184的來(lái)歷,也是m2的值。
?
? 后面的160、160、352也是一樣的。
2017-09-15
自己贊自己,有積分不?