2010-05-31 8 views
4

이 코드를 내가 가지고있다 :메모리 누수가 발생 했습니까?

90664 
93384 
96056 
98728 
101400 

는 메모리 누수가 없습니다 :

<?php 
$start = memory_get_usage(); 
$table = new Zend_Db_Table('user'); 
for ($i = 0; $i < 5; $i++) { 
    $row = $table->createRow(); 
    $row->name = 'Test ' . $i; 
    $row->save(); 
    unset($row); 
    echo (memory_get_usage() - $start) . "\n"; 
} 

이 내가 무엇을보고 무엇입니까? 하나의 스크립트에서 DB에 삽입 할 500 개의 객체가있을 때 메모리 오버플로가 발생합니다. 누구든지 도와 줄 수 있습니까?

+0

설정을 해제하기 전에 $ row = null을 사용해보아야합니다.이를 달성하는 방법에 대한 "트릭"이 있습니다. symfony 1.4/doctrine 1.2와 비슷한 문제가 있었지만 "sql_auto_free queries"와 같은 옵션을 찾아야합니다. –

답변

1

5 대신 500을 삽입하면 메모리 오류가 발생하는 경우 실제로는 누수가됩니다 (일부 캐싱 일 수도 있음). 메모리 사용량이 대신 위아래로 오르면 정상입니다. garbage collector이 메모리를 다시 비우고 있습니다.

+0

위의 예제에서 보았 듯이 메모리 사용량은 줄어들지 않습니다. (500+ 개체를 사용하면 정확히 동일한 동적 특성을 갖게되고 – yegor256

+0

은 누수처럼 보입니다. – soulmerge

관련 문제