¿Cuáles (tf) son los secretos detrás de la asignación de memoria PDF (CGPDFDocumentRef)

Para un lector de PDF, quiero preparar un documento tomando 'capturas de pantalla' de cada página y guardarlas en el disco. El primer enfoque es

CGPDFDocumentRef document = CGPDFDocumentCreateWithURL((CFURLRef) someURL);
for (int i = 1; i<=pageCount; i++) 
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];      
  CGPDFPageRef page = CGPDFDocumentGetPage(document, i);
  ...//getting + manipulating graphics context etc.
  ...
  CGContextDrawPDFPage(context, page);
  ...
  UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
  ...//saving the image to disc 
  [pool drain];
}
CGPDFDocumentRelease(document);

Esto da como resultado una gran cantidad de memoria que parece no liberarse después de la primera ejecución del ciclo (preparación del primer documento), pero no más memoria inédita en ejecuciones adicionales:

MEMORY BEFORE:          6 MB
MEMORY DURING 1ST DOC: 40 MB
MEMORY AFTER 1ST  DOC: 25 MB 
MEMORY DURING 2ND DOC: 40 MB
MEMORY AFTER 2ND  DOC: 25 MB
....

Cambiar el código a

for (int i = 1; i<=pageCount; i++) 
{
  CGPDFDocumentRef document = CGPDFDocumentCreateWithURL((CFURLRef) someURL);
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];      
  CGPDFPageRef page = CGPDFDocumentGetPage(document, i);
  ...//getting + manipulating graphics context etc.
  ...
  CGContextDrawPDFPage(context, page);
  ...
  UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
  ...//saving the image to disc 
  CGPDFDocumentRelease(document);
  [pool drain];
}

cambia el uso de memoria a

MEMORY BEFORE:          6 MB
MEMORY DURING 1ST DOC:  9 MB
MEMORY AFTER 1ST  DOC:  7 MB 
MEMORY DURING 2ND DOC:  9 MB
MEMORY AFTER 2ND  DOC:  7 MB
....

pero obviamente es un paso atrás en el rendimiento.

Cuando comienzo a leer un PDF (más adelante en el tiempo, un hilo diferente) en el primer caso, no se asigna más memoria (quedándose en 25 MB), mientras que en el segundo caso la memoria sube a 20 MB (de 7).

En ambos casos, cuando elimino elCGContextDrawPDFPage(context, page); la memoria de línea es (casi) constante a 6 MB durante y después de todas las preparaciones de documentos.

¿Alguien puede explicar qué está pasando allí?

Respuestas a la pregunta(1)

Su respuesta a la pregunta