symfony のデバッグモードだと Propel のオブジェクトがメモリを解放しない

バッチスクリプトなどで、ループの中で Propel オブジェクトを new して save するという処理を大量に行うと、オブジェクトを破棄しても php が消費するメモリの量がぐんぐん増えて、最後は memory exausted で落ちる*1という現象に悩んでいたのですが、解決法を発見。

スクリプト中で SF_DEBUG を true にしているとこの問題が発生、false にすると発生しないということのようです。

symfony framework forum: General discussion => Memory leak in propel during debug mode
http://www.symfony-project.com/forum/index.php/m/13433/?srch=memory%20batch#msg_13433

そもそもデバッグモードにしとくのが悪いという話もありますが、これは盲点でした。

*1:オブジェクトの複雑さによるけど、だいたい1万回もいかずにメモリ使用量が1Gを超えてしまう