… cuando está en el primer plano.

Para el iPad original, con 256 mb de RAM, me encontré con que mi aplicación se puede utilizar hasta 100-140MB antes de que fuera asesinado.

¿Cuál es la situación hoy en día? Yo podría hacer ir a comprar un montón de iDevices y hacer una prueba a mí mismo, pero quería comprobar: alguien Ha hecho la prueba?

Entiendo que esto no tiene una respuesta precisa, y estoy en busca de un rango, como: «las Aplicaciones son asesinadas al uso 300-menos 350 mb a 512 mb de un dispositivo. Usted puede utilizar con seguridad hasta 300MB.»

Específicamente:

  1. En un dispositivo con memoria de 512MB, ¿cuánto puede una aplicación de uso?

  2. En un dispositivo con memoria de 1GB, ¿cómo puede una aplicación de uso?

  3. Hay una diferencia entre los de arriba? Cada individuo de la aplicación se limita a una cantidad fija de memoria en el interés de mantener un par de aplicaciones en segundo plano, o puede que la app en primer plano expulsar a TODOS de fondo las aplicaciones de la memoria, y tener todo 1GB (o 512MB) a sí mismo (y el sistema operativo, por supuesto)?

  4. ¿Importa si el dispositivo es un iPad o un iPhone? Si puedo obtener mi app trabajando en un iPad con 512 mb de memoria, significa que también funciona en un iPhone con 512 mb de memoria, y viceversa? Sé que UIViews, y su Núcleo de Animación almacenes de respaldo, tendrá más memoria en el iPad debido al mayor tamaño de pantalla, pero aparte de eso, es la memoria en la misma situación entre un iPhone y un iPad, con la misma memoria?

Me estoy refiriendo a la memoria total usada por el proceso, montón, pila, los datos estáticos, código, Core Animation almacenes de respaldo, etc.

Si usted está inclinado a decir que depende de la versión del sistema operativo, se puede asumir que estamos hablando de iOS 7.

Sé que el uso de demasiada memoria significa que cuando mi app va en el fondo, iOS va a terminar más rápido. Estoy bien con esta disyuntiva, por ahora.

  • Eso no es cierto. Para el iPad original, con 256 mb de RAM, me encontré con que mi aplicación se puede utilizar hasta 100-140MB antes de que fuera asesinado.
  • Incluso si fuera cierto, que no haría una mala PREGUNTA. «Nadie fuera de la Apple sabe» sería una respuesta en ese caso.
  • Yo no he dicho que estaba buscando una respuesta precisa. Una gama va a hacer, como dije en mi comentario sobre xcodeNoob la respuesta. Como: 350-400MB en una de 512MB dispositivo. Estoy aclarar la cuestión.
  • HotLicks es derecho sobre nadie saber una respuesta exacta. De todos los posts que he leído en el pasado, me atrevería a adivinar que puede utilizar el 10% como un número aproximado. Si utiliza la carga diferida y otras técnicas, no siempre debe acercarse demasiado a que el número de todos modos.
  • No iOS desalojar a fondo las aplicaciones necesarias para la app en primer plano? Eso significa que en un 1 GB dispositivo, puedo usar 1 gb – memoria necesaria para el sistema operativo. Desde la memoria necesaria para el sistema operativo tiene que ser < 400M (de lo contrario, iOS 7 no se ejecutan en los 512M dispositivos), que significa que yo soy la garantía de tener 600M disponible en un dispositivo con memoria RAM de 1G. La correcta?
  • (Yo un poco sospechoso que Apple utiliza algún tipo de «aprendizaje» algoritmo que mantiene estadísticas sobre una aplicación y le da más o menos espacio basado en cómo se comporta y cómo el usuario utiliza. Una aplicación que crece de manera constante, es apta para ser tratada peor que uno que llega a un nivel y se queda allí, por ejemplo, y una aplicación que se ha comportado en el pasado, es apto para ser dado un poco más de margen.)
  • He leído que el margen que se aplica cuando la aplicación está en el fondo: si usted usa más memoria, usted está más propensos a ser asesinados cuando se entra en el fondo.
  • Yo sé acerca de la carga diferida y otras técnicas. Soy consciente de que usted está tratando de ayudar, pero me gustaría una respuesta a la pregunta que le hice y no al azar consejos de optimización.
  • Obviamente, nadie sabe un número exacto. Sugiero que abra un ticket de soporte técnico en su cuenta de desarrollador de Apple y pedir a Apple directamente.
  • Como me dijo un par de veces, yo no estoy buscando un número exacto, pero de un rango, como 300-menos 350 mb.
  • esto es perfectamente válida la pregunta y sus respuestas son fantásticos. La lectura a través de esto fue muy útil para mí, ya que he visto a mi app acaba de saltar de 86 MB a 136 MB después de una reciente iteración. Me he decidido a hacer un gol de mantenerse a la derecha alrededor de 100 MB – esto evitará que me lean y me gire más rápido si y cuando quiero modificar mi app para el Apple Watch o tvOS.
  • Feliz que era útil. ¿Tiene usted acceso a un dispositivo con memoria de 1GB, como el iPhone 5, 5c o 5s? Puede ejecutar mi aplicación de prueba, dos veces, y el informe de la menor de los dos números? No salga de otras aplicaciones o reiniciar el dispositivo. Gracias — me va a ayudar con mi diseño.

3 Comentarios

  1. 33

    Escribí una aplicación de prueba que mide la cantidad de memoria de una aplicación puede asignar antes de que sea asesinado. Aquí están los números:

    • 5s iPhone (iOS 10, el modo de depuración, 1GB de memoria): 600MB puede ser asignado
    • iPad Aire 2 (iOS 11.4, 2GB de memoria): 1.3 GB puede ser asignado
    • iPhone X (iOS 11.4, 3GB de memoria): 1.2 GB puede ser asignado
    • iPhone 7 Plus (iOS 12.1, 3 GB de memoria): 1.8 GB puede ser asignado
    • iPad de 13 pulgadas (iOS 11.4, 4GB de memoria): 3 GB puede ser asignado

    Es interesante que nunca tuve una advertencia memoria.

    Aquí está el código si desea ejecutar la prueba a ti mismo:

    import UIKit
    
    let sizeInMb = 100
    
    class Wrapper {
      var array = [UInt8](repeating: 0, count: sizeInMb * 1048576)  //100 MB
    }
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
        var window: UIWindow?
    
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            window = UIWindow(frame: UIScreen.main.bounds)
    
            var i = 0
    
            sleep(5)  //So that you can see how much memory it consumes before any allocations.
    
            while true {
                let w = Wrapper()
                Unmanaged<Wrapper>.passRetained(w)
                i += 1
                print("\(i * sizeInMb) MB allocated")
                sleep(1)  //Give the OS a chance to kill other processes.
            }
    
            return true
        }
    
        func applicationDidReceiveMemoryWarning(_ application: UIApplication) {
            print("Memory warning!")
        }
    }

    Esto no funciona en el simulador. Nada en cuanto a rendimiento debe ser probado en el dispositivo.

    • Parece ser alrededor de 60-70% de la capacidad de memoria del dispositivo.
    • Es este también el trabajo en los simuladores? (Me encontré con esto en el iPhone SE simulador con iOS12 y se fue por encima de 25GB y dejé de hacerlo manualmente)
    • No, he actualizado la respuesta.
  2. 12

    De 2014 mi mínimos de hardware dispositivo de pruebas es un iPhone 4s ejecución de iOS7 con ~50 apps instaladas. Después de un reinicio, el sistema operativo libre de hasta 200mb de 512 total. Después de una semana de uso regular, la mejor que se puede manejar es de 100 mb.

    Estoy desarrollando una aplicación de Adobe AIR que no recibe poca memoria advertencias desde el sistema operativo. Si se pone cerca del límite, se bloquea. Así que trate de permanecer por debajo de 100 mb si desea ejecutar en dispositivos con 512 mb de memoria ram total. Recuerde, esto es para la gpu y la cpu combinado.

    • cómos de la cpu gpu y ram relacionados?
    • Generalmente los gráficos de las texturas se almacenan en la tarjeta de vídeo en la GPU, ram, pero en los dispositivos iOS de utilizar una Arquitectura de Memoria Unificada y almacenar sus texturas en CPU ram. apple.stackexchange.com/questions/54977/…
  3. 8

    Hola acabo de probar con mi aplicación, para 512 mb de un dispositivo, la aplicación se bloqueará en cualquier momento después de 250mb de uso, dando «la Presión de la Memoria» de la cuestión.

Dejar respuesta

Please enter your comment!
Please enter your name here