Я вообще не знаю expat, но думаю, что по какой-то причине ему приходится слишком много хранить в памяти. XML mal сформирован каким-то образом? У вас есть обработчики, зарегистрированные для конечных тегов больших блоков?
Я думаю, что если у вас зарегистрирован обработчик для конца большого блока, и ожидается, что expat передаст блок в обработчик, то у expat может не хватить памяти, прежде чем он сможет полностью собрать этот блок , Как я уже сказал, я не знаю экспата, так что это может быть невозможно, я просто спрашиваю.
С другой стороны, вы уверены, что в expat происходит потеря памяти? Я мог бы представить ситуацию, когда вы хранили некоторую информацию о содержимом файла XML, и ваши собственные структуры данных, либо из-за того, что данные были слишком большими, либо из-за утечек памяти в вашем коде, вызвали состояние нехватки памяти.