¿Qué significa "anónimo VM" en los instrumentos de asignación?

Recibo advertencias de memory frecuentes en mi request, pero no sé por qué. Aquí está la instantánea de los instrumentos de asignación.

Instrumentos

Sé que no tenemos ningún control sobre la memory virtual asignada a nosotros, pero estoy tratando de entender qué información hace ese número 26.50 MB para un desarrollador.

  1. ¿Qué significa una alta VM?  ¿Conduce a un jetsam?  ¿Es esa la causa de otra preocupación?
  2. ¿Es este valor dependiente del dispositivo?
  3. ¿Un vm bajo significa que su aplicación es eficiente en memory? 
  4. ¿Una VM alta conduce a advertencias de memory en su aplicación?
  5. ¿Qué causa que cambie este valor? 
  6. ¿Qué pasos debe tomar un desarrollador cuando ven una alta vm para su aplicación (como 300 MB)? 
  7. ¿El instrumento del rastreador VM está relacionado con este valor?

La VM anónima cubre muchas cosas, algunas de las cuales son cosas que desea minimizar y algunas que generalmente son less importantes. La versión corta de "VM anónima" es que son las direcciones que ha asignado, pero no nombradas. Las asignaciones de stack obtienen "named" que le permite rastrearlas como objects. Pero hay muchas (y muchas) cosas no objetables que caen en el cubo "VM anónimo".

Las cosas asignadas con malloc pueden terminar en esta región. Pero también files asignados de memory. Su file ejecutable es un file asignado a la memory, pero como nunca está sucio, algunas partes pueden intercambiarse. Entonces "es complicado". Pero en términos grandes y vagos, sí, te preocupa esta sección, pero puede que no te importe mucho. Las asignaciones de montón tienden a rastrear tus cosas de ObjC. La VM anónima a menudo rastrea cosas sobre las que no tiene mucho control directo (como el almacenamiento de respaldo de CALayer).

Dicho todo esto, la salida de instrumentos que proporciona no parece ser un problema importante. Sospecho que no es indicativo de una vez que estás presionando la memory. Tendrá que entrar en una situación de advertencia de memory y ver qué sucede entonces, y profundizar en los detalles de lo que está utilizando la memory.

Para get más detalles sobre esto, debe ver la session 704 de WWDC 2013 "Construyendo aplicaciones eficientes de OS X" que profundiza en gran parte de esto. Aunque iOS tiene un sistema de memory un tanto diferente, y algunas herramientas de OS X no están disponibles en iOS, muchos de los conceptos aún se aplican.