關於php類的實例化和內存的關系,可以這么說:只要有一個new 關鍵字就是創建一個對象,創建一個對象就是在內存中分配了一個空間。
代碼1:
在循環外實例化類:
class ABC
{
public $numBox = array();
public function ddd()
{
echo 'Now memory_get_usage: ' . memory_get_usage() . '<br />';
}
}
$instance = new ABC();
for ($i = 0; $i < 10; $i++) {
$instance->ddd();
}
運行結果:
Now memory_get_usage: 214024
Now memory_get_usage: 214184
Now memory_get_usage: 214184
Now memory_get_usage: 214184
Now memory_get_usage: 214184
Now memory_get_usage: 214184
Now memory_get_usage: 214184
Now memory_get_usage: 214184
Now memory_get_usage: 214184
Now memory_get_usage: 214184
代碼2:
在循環內實例化類:
class ABC
{
public $numBox = array();
public function ddd()
{
echo 'Now memory_get_usage: ' . memory_get_usage() . '<br />';
}
}
for ($i = 0; $i < 10; $i++) {
$instance = new ABC();
$instance->ddd();
}
運行結果
Now memory_get_usage: 213992
Now memory_get_usage: 214152
Now memory_get_usage: 214152
Now memory_get_usage: 214152
Now memory_get_usage: 214152
Now memory_get_usage: 214152
Now memory_get_usage: 214152
Now memory_get_usage: 214152
Now memory_get_usage: 214152
Now memory_get_usage: 214152
只要有一個new 關鍵字就是創建一個對象,創建一個對象就是在內存中分配了一個空間,每次重新分配內存一定是要占用更多的內存的,所以,我們要對的類的實例化要注意,這樣也就是為什么要使用單實例設計模式,因為這樣可以節約內存。