真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP筆記變量和內(nèi)存管理-創(chuàng)新互聯(lián)

鳥哥的博客是個大寶庫,正在從頭看起。

創(chuàng)新互聯(lián)建站網(wǎng)站建設公司是一家服務多年做網(wǎng)站建設策劃設計制作的公司,為廣大用戶提供了網(wǎng)站設計制作、網(wǎng)站建設,成都網(wǎng)站設計,1元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián)建站,貼合企業(yè)需求,高性價比,滿足客戶不同層次的需求一站式服務歡迎致電。

《深入理解PHP內(nèi)存管理之誰動了我的內(nèi)存》

http://www.laruence.com/2011/03/04/1894.html

1、memory_get_usage 函數(shù)

int memory_get_usage ([ bool $real_usage = false ] )

PHP腳本使用的內(nèi)存(不含 memory_get_usage() 函數(shù)本身占用的內(nèi)存)

memory_get_usage()的參數(shù)$real_usage,默認為 FALSE;當設置為 TRUE 時,得到的內(nèi)存值為PHP 內(nèi)存管理占用的內(nèi)存。

//php分配到的內(nèi)存 var_dump(memory_get_usage(true)); //php使用內(nèi)內(nèi)存 var_dump(memory_get_usage());

結果

int 262144
int 239368

PHP的內(nèi)存管理機制是:預先分配一塊空間,用來存儲變量,當空間不夠時,再申請一塊新的空間。

memory_get_usage(true)即為預先分配的內(nèi)存。

之前沒有注意過PHP頁面的內(nèi)存使用,以后優(yōu)化頁面時候也應該用這個函數(shù)來分析代碼。

2、變量賦值和內(nèi)存

var_dump(memory_get_usage()); $a = "Hello World"; var_dump(memory_get_usage()); $b = $a; var_dump(memory_get_usage()); unset($b); var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage());

結果

int 239776int 239912int 240000int 239912int 239776

239912-239776=136

240000-239912=88

$a和$b賦值所使用的內(nèi)存不同,原因是$b賦值并沒有分配內(nèi)存,這88個字節(jié)是輸出函數(shù)占用的。

另外銷毀$b,并不影響$a使用的內(nèi)存,這個是內(nèi)存管理引用計數(shù)的原因

改一下例子就能很清楚的了解變量賦值和內(nèi)存的關系

var_dump(memory_get_usage()); $a = "Hello World"; var_dump(memory_get_usage()); $b = "Hello World"; var_dump(memory_get_usage()); unset($b); var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage());

結果

int 239816int 239952int 240088int 239952int 239816

239952-239816=136

240088-239952=136

另外引用賦值占用內(nèi)存規(guī)則和直接賦值相似,這也涉及到內(nèi)存管理的引用計數(shù)規(guī)則

3、php垃圾回收機制,這部分了解的還不夠深入,簡單記錄一個函數(shù)

xdebug_debug_zval 需要安裝xdebug擴展

$a = "Hello World"; xdebug_debug_zval('a');

輸出

a:

(refcount=1, is_ref=0),string 'Hello World' (length=11)

refcount 指向該值的變量數(shù)量

is_ref 代表是否有地址引用

類型



變量賦值的時候:is_ref為false refcount為1

手冊地址

引用計數(shù)的基本知識

http://php.net/manual/zh/features.gc.refcounting-basics.php

每個php變量存在一個叫"zval"的變量容器中。一個zval變量容器,除了包含變量的類型和值,還包括兩個字節(jié)的額外信息。第一個是"is_ref",是個bool值,用來標識這個變量是否是屬于引用集合(reference set)。通過這個字節(jié),php引擎才能把普通變量和引用變量區(qū)分開來,由于php允許用戶通過使用&來使用自定義引用,zval變量容器中還有一個內(nèi)部引用計數(shù)機制,來優(yōu)化內(nèi)存使用。第二個額外字節(jié)是"refcount",用以表示指向這個zval變量容器的變量(也稱符號即symbol)個數(shù)。所有的符號存在一個符號表中,其中每個符號都有作用域(scope),那些主腳本(比如:通過瀏覽器請求的的腳本)和每個函數(shù)或者方法也都有作用域。  

以上翻看鳥哥的11年的blog文章,對PHP的變量和內(nèi)存管理有了一個初步的認識。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


本文名稱:PHP筆記變量和內(nèi)存管理-創(chuàng)新互聯(lián)
文章起源:http://weahome.cn/article/idphd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部