>очищает память, но после его выполнения процесс httpd начинает кушать от
>20Mb до 50Mb, в зависимости от размера изображения.
Это не утечка памяти, а особенности работы с памятью mod_php. Если процесс использовал какой-то объем памяти, а потом освободил ее, то эта память физически не освобождается, а остается за процессом и будет использована в случае повторых запросов памяти. И так для каждого httpd процесса, если у тебя их 100, то рано или поздно все 100 будут занимать столько сколько по максимому запросит php скрипт в рамках каждого дочернего httpd.
Методы лечения:
1. Требовательные к памяти запросы выполнять не через mod_php, а через cgi-версию php.
2. Поставить memory_limit и похоронить жрущие память скрипты (для массового хостинга подходит).
3. Поставить MaxRequestsPerChild 1
4. Использовать два апаче, первый, бэкенд, с mod_php и ограничением на число клиентов в 5-10, второй, легкий фронтенд, с mod_accel или на nginx вместо apache, который будет пронимать запросы от клиентов и переправлять в бэкенд.
>Память освобождается, но далеко не сразу. Иногда спустя час. Но так как
>изображения загружаются часто, то память быстро заканчивается.
Вполне вероятно что она не освобождается, а дочерний процесс апача отмирает, после обработки MaxRequestsPerChild запросов.