Mi aplicación, que utiliza ARC, hace lo siguiente:La reducción de la memoria de UIImages de la cámara utilizando instrumentos
- carga una imagen tomada por la cámara
- comprime la imagen para su uso como una miniatura.
- hago esto utilizando [UIImage imageWithData: UIImageJPEGRepresentation (original, 0.1f)]
- I establezca la referencia de la imagen sin comprimir a cero para ARC para liberar la memoria
Repitiendo esta secuencia significará que varios comprimidos las miniaturas están en la pantalla. Después de aproximadamente 7 u 8 imágenes, la aplicación se bloqueará debido a la poca memoria.
En Instruments, estoy intentando usar asignaciones en tándem con Memory Monitor para encontrar el origen de mi problema.
Algunas estadísticas Instrumentos:
asignación - Vivo Bytes salta por cerca de 2 MB después de tomar una foto, pero luego va disminuyendo en 1,5 MB después de la referencia de la imagen original se establece en cero. Eso parece ser algo bueno, pero ...
Aquí hay un estado final de la aplicación. # La vida parece ser muy alta en relación con los Live Bytes, ¿verdad?
Live Bytes #Living #Transitory Overall #Overall Bytes
3.72 MB 24538 80679 90.1 MB 105301
Memory Monitor (seguimiento de cabezal de inspección) - Mi aplicación se inicia en el 7,5 MB y tomando uno resultados de imagen en la que el aumento de ~ 13 MB. Para el estado que he enumerado anteriormente, el monitor de memoria dice que la aplicación está ocupando 72.67 MB de "memoria real" y 123.79 MB de memoria virtual.
Teniendo en cuenta que los Live Bytes son muy pequeños, sé que estoy haciendo algo bien, . Sin embargo, dado que la huella de memoria en otros lugares es grande, también estoy seguro de que estoy haciendo algo muy mal. ¿Alguna idea de lo que podría ser, o cómo rastrearla?
+1 para una buena pregunta. ¿Cómo está cargando sus imágenes para mostrarlas en la pantalla? ¿Estás usando '[UIImage imageNamed:]'? – Rog
Dijo que usa la cámara. –
¿Cuál es el propósito de esta línea? [UIImage imageWithData: UIImageJPEGRepresentation (original, 0.1f)] Está comprimiendo la imagen y luego descomprimiéndola inmediatamente. El resultado es solo una pérdida de calidad de imagen y tiempo de CPU. –