2012-06-24 48 views
1

它看起來像在PHP中需要大約213個字節來存儲一個整數,這是真的嗎? 好吧,請在下次代碼看看:php內存使用情況

$N = 10000; 
echo memory_get_usage()."\n"; 
$v = array(); 
for($i = 0; $i < $N; $i++) { 
    $v[] = $i; 
} 
echo memory_get_usage()."\n"; 
unset($v); 
echo memory_get_usage()."\n"; 

輸出是下一個:

641784 
2773768 
642056 

因此,所不同的是2773768 - 641784 = 2131984字節,或每213整數字節。 爲什麼這麼多? 4個字節綽綽有餘。

回答

3

如果只是簡單地將一個整數值存儲在內存中的某個位置,而沒有考慮到它是一個需要數據類型標識的變量這一事實,那麼4個字節就足夠了,這些標記指示是否還有其他對該變量的引用,該變量的名稱等,所有這些都需要額外的內存。

PHP將值存儲在zval *中,因此除了實際值之外,還有用於存儲zval詳細信息的所有附加字節。

+0

還要注意的是4個字節爲一個整數值爲32位PHP正確的,如果你使用64位那麼它的8字節 –

+0

還要注意的是要創建的陣列,其還具有的zval結構,並且與將該數組映射到它所包含的值相關聯的散列映射也具有內存開銷 –