Le nostre app sono attive nell'app store. Desidero riconoscere gli arresti anomali della memoria che alcuni utenti stanno ottenendo. Capisco che non c'è modo di riconoscere al 100% un arresto anomalo della memoria. C'è un modo per riconoscere questi arresti anomali (con una probabilità piuttosto grande) facendo qualche logica nell'applicazioneDidReceiveMemoryWarning? (Non sto parlando di trovarlo in xcode durante lo sviluppo, sto parlando di codice che riconoscerà l'esaurimento della memoria dagli utenti effettivi e registrerà qualcosa su file)Riconoscimento di un arresto anomalo della memoria (IOS)
risposta
Cerca il messaggio applicationWillTerminate
nella tua app delegare. Questo viene chiamato se l'app viene terminata dal sistema (a causa, ad esempio, di memoria insufficiente), ma non se l'utente lascia l'app nel solito modo premendo il tasto Home. Nota: se l'app è in background e la memoria si esaurisce, l'app viene uccisa senza che vengano inviati messaggi.
YMMV, in particolare con le versioni precedenti di iOS, e vale la pena fare ricerche per garantire che quanto sopra sia accurato.
Le immagini allo this blog post sono piuttosto informative (anche se un po 'datate).
Per ulteriori informazioni, vedere How to know whether app is terminated by user or iOS (after 10min background)
l'applicazioneWillTerminate si verificherà ogni volta che l'app viene interrotta a causa della memoria (quando è in primo piano)? Inoltre, verrà richiamato anche quando l'utente chiude completamente l'app (non spostandola sullo sfondo)? – AJ222
In primo luogo analizzare il vostro applicazione facendo clic sul prodotto alla barra dei menu superiore del vostro Xcode e cliccare su Analizza sezione che vi mostrerà il numero di perdite sul nell'applicazione e può portarti nel luogo in cui si sono verificate le perdite. Ecco come puoi trovare la perdita di memoria e correggerla. In secondo luogo, non funziona, quindi controlla il controller della vista in cui si è verificato un arresto anomalo e controlla se hai lasciato qualsiasi oggetto da rilasciare. Spero che questo possa aiutarti a risolvere il tuo problema.
Hai risposto a una domanda diversa da quella richiesta. Ha anche detto nel suo post "Non sto parlando di trovarlo in xcode durante lo sviluppo". – occulus
Ci sono buone librerie di terze parti disponibili per monitorare le prestazioni della propria applicazione iOS in real time.Below 2 sono ben noti di tale categoria:
- Google Analytics
- Crittercism
Si traccia e invia i rapporti sugli arresti anomali dei dispositivi degli utenti al tuo account. Con tutta probabilità ti informano anche sugli arresti anomali avvenuti a causa della poca memoria!
https://developers.google.com/analytics/devguides/collection/ios/
Spero che questo potrebbe risolvere il problema fino a un certo punto.
Mentre ero alla ricerca di qualsiasi servizio o libreria che mi dia il monitoraggio OOM, ho potuto trovare solo in questo articolo dall'ingegneria Facebook:
https://code.facebook.com/posts/1146930688654547/reducing-fooms-in-the-facebook-ios-app/
L'idea è quella di dedurre il motivo per cui l'applicazione ha bisogno di essere avviato, controllando aspetti diversi (come se l'app fosse in background, se c'è un aggiornamento app/OS, ...).
Scartando tutti gli altri possibili motivi che possono forzare l'uscita della precedente app, è possibile sapere se il motivo è uno sfondo fuori dalla memoria o una memoria in primo piano.
Sarebbe bello avere una libreria che implementa la procedura di articolo di Facebook. Ma al giorno d'oggi non sono riuscito a trovarne, probabilmente c'è qualche ragione che rende difficile o potrebbe essere impossibile aggiungerlo come sdk.
Se qualcuno conosce un servizio, si prega di condividerlo con tutti con un commento o una nuova risposta.
Edit:
ho scoperto questo github (https://github.com/jflinter/JRFMemoryNoodler) con un'implementazione della procedura di post di Facebook. Non ho ancora provato, ma lo implementeremo nelle nostre app per provarlo.
hai finito per provarlo? qualsiasi successo? – Johanisma
@Johanisma, no stavamo per distribuire le nostre app con questa libreria (JRFMemoryNoodler) ma appena prima di chiudere la build, abbiamo deciso di rimuoverlo. Perché quando abbiamo forzato l'arresto anomalo dell'app (durante lo sviluppo), non eravamo sicuri che questo strumento potesse aiutarci a rilevare le diverse OOM (forse non abbiamo interpretato correttamente gli arresti anomali o non funzionava bene). Se trovi qualcosa, condividilo perché ha ancora OOM. –
- 1. Arresto anomalo di iOS libobjc.A.dylib objc_msgSend
- 2. Arresto anomalo della traccia con Google Analytics iOS
- 3. Il caricamento di video di grandi dimensioni tramite NSURLSession causa un arresto anomalo della memoria
- 4. iOS: UITextView con arresto anomalo NSTextStorage personalizzato
- 5. iPhone 6s - iOS 9.1 arresto anomalo su [UICollectionViewController previewingContext: viewControllerForLocation:]
- 6. Avvisi di memoria/arresto anomalo con l'app per iPad PhoneGap
- 7. Che cosa significa "SIMULATO (questo NON è un arresto anomalo)" nel rapporto di arresto anomalo di iOS?
- 8. Arresto anomalo di NSCache quando viene raggiunto il limite di memoria (solo su iOS 7)
- 9. Arresto anomalo del distruttore
- 10. Arresto anomalo di iOS, EXC_BREAKPOINT, nessun indizio con Xcode 6.1
- 11. iOS CloudKit arresto anomalo del blocco di completamento per -fetchUserRecordIDWithCompletionHandler:
- 12. Arresto anomalo di iOS all'avvio senza Xcode collegato
- 13. Semplice arresto anomalo dell'applicazione
- 14. Arresto anomalo del server
- 15. Arresto anomalo di Parse.com - android
- 16. OpenGL ES arresto anomalo su spostamento sfondo, iOS 5.1
- 17. UIWebView iOS 8 Azione Arresto anomalo in Safari mobile iOS 8
- 18. C# File.Replace protezione da un arresto anomalo
- 19. Arresto anomalo del dispositivo iOS durante il dereferenziamento di un puntatore restituito dalla decodifica di NSCoderBytesForKey
- 20. iOS: come implementare il riconoscimento della calligrafia?
- 21. Semplice arresto anomalo del programma
- 22. Arresto anomalo dell'applicazione su HttpLoggingInterceptor
- 23. java.lang.UnsatisfiedLinkErrore arresto anomalo di alcuni dispositivi
- 24. Modulo di errore: kernelbase.dll. Arresto anomalo dell'applicazione
- 25. Come interpretate un rapporto di arresto anomalo Android deoffuscato?
- 26. Arresto anomalo di WPF da Environment.FailFast
- 27. Arresto anomalo di Android su ListPreference
- 28. Arresto anomalo di Unity nella prima scena
- 29. Arresto anomalo di Core Core (null)
- 30. Arresto anomalo di un'app in Android
Gli strumenti di utilizzo (cmd + I) seguono le allocazioni. – Levi
Anche se è un problema tecnico: la tua app viene interrotta a causa della poca memoria non è in realtà un 'crash' (anche se sembra che sia per il tuo utente). – occulus
In generale, no. Ma, la causa più probabile di una situazione di memoria insufficiente è l'uso improprio di UIImage che provoca la memorizzazione di troppe immagini contemporaneamente. Un'altra causa molto probabile sono i cicli di conteggio dei ref in ViewControllers che rifattano altri controller di vista in un modo che causa un loop. Il problema è che spesso questi problemi si manifestano solo nel prodotto dopo che è stato rilasciato ed è in esecuzione sui dispositivi degli utenti finali. Solo un accurato processo di sviluppo e revisioni del codice possono prevenire questo tipo di problema. – MoDJ