PHP: утечка памяти в рекурсивной функции

У меня есть рекурсивная функция, которая с учетом идентификатора создает путь к каталогу. Дело в том, что он не освобождает пространство, поэтому, начиная с потребления памяти 15 МБ после 1761 папок, потребление памяти составляет около 150 МБ, что не является здоровым.

это функция:

private function buildDirectoryPath($iId, $sDir = "") { $oFolder = Folders::getFolder($iId); if (!empty($sDir)) $sDir = $oFolder->getName() . "/" . $sDir; else $sDir = $oFolder->getName(). $sDir; if ($oFolder->getParentId() > 0) $sDir = $this->buildDirectoryPath($oFolder->getParentId(), $sDir); return $sDir; } 

и вот как я его называю (внутри петли папок):

 foreach ($aFolders as $aFolder) { $sFolderPath = $this->buildDirectoryPath($aFolder["fol_id"]); } 

так что, честно говоря, я еще не написал много рекурсивных функций, поэтому я открыт для любых корректировок

изменить, добавив статический метод Folders :: getFolder:

 static public function getFolders($sAppCode, $iParentId = 0) { $oDb = Zend_Registry::get('db'); $oSelect = $oDb ->select() ->from('folders') ->where('folders.fol_deleted_user_id = 0') ->order('folders.fol_name ASC'); if ($iParentId >= 0) { $oSelect->where('folders.fol_parent_id = ' . (int)$iParentId); } $aFolders = $oDb->fetchAll($oSelect); //added the $object = null later $oDb = null; $oSelect = null; $oAppSelector = null; return $aFolders; } 

edit2: если я не найду легкое решение, мой план b должен был бы поместить кеш пути, поэтому мне не нужно их создавать. его просто, что я должен изменить много кода внутри приложения