Из того, что я вижу, ваш код, кажется, не ошибается ...
В качестве теста я создал быстрый пример с очень простой таблицей (только четыре поля) .
Вот соответствующий код:
var_dump(number_format(memory_get_peak_usage()));
$test = Doctrine::getTable('Test')->find(1);
var_dump(number_format(memory_get_peak_usage()));
При этом у меня есть такой вывод:
string '1,316,088' (length=9)
string '2,148,760' (length=9)
Учитывая, что таблица действительно проста, и что я выбираю только одну строку, мне это тоже кажется "много" - но это вполне соответствует тому, что вы получаете, и тому, что я видел в других проектах: - (
Если вам нужно только отображать ваши данные, а не работать с ними (т.е. обновлять / удалять / ...), решение может состоять в том, чтобы не извлекать сложные объекты, а только простой массив:
$test = Doctrine::getTable('Test')->find(1, Doctrine::HYDRATE_ARRAY);
Но, в данном случае, это не имеет большого значения, на самом деле :-(:
string '1,316,424' (length=9)
string '2,107,128' (length=9)
Только 40 КБ разницы - ну, с большими объектами / большим количеством линий, это может быть хорошей идеей ...
В руководстве по доктрине есть страница под названием Улучшение производительности ; Может быть, это может помочь вам, особенно для этих разделов:
О, кстати: я сделал этот тест на PHP 5.3.0; может быть, это может повлиять на количество используемой памяти ...