web-dev-qa-db-fra.com

(XCode 7 + iOS 9 + iPhone 4s/iPhone5 uniquement) problème: "malloc: *** mach_vm_map (size = 1048576) a échoué (code d'erreur = 3)"

Je sais que le problème est lié aux allocations de mémoire, mais je ne le comprends que dans iOS 9, XCode 7. Sous XCode 6.4, iOS 8.4, cela fonctionne parfaitement, aucun problème du tout. Dans iOS 9, XCode 7, il se bloque très souvent en donnant cette erreur.

malloc: *** mach_vm_map(size=1048576) failed (error code=3) *** error: can't allocate region securely *** set a breakpoint in malloc_error_break to debug

Aucune suggestion? Je travaille sur des problèmes de mémoire, mais je me demande s’il ya trop de problèmes de mémoire. Pourquoi at-il fonctionné sous iOS 8.4 et non sous iOS 9?

En outre, je reçois toute mon interface blanchie! Comme la barre de navigation n'a pas de titre, la barre de tabulation personnalisée (RDVTabBar) n'est pas visible, cependant, il existe un autre contrôleur de vue (il répond aux événements tactiles, vous pouvez toucher cette zone et le bouton situé dans cette zone agit!).

P.S. Je ne reçois jamais d'avertissement concernant la mémoire, aucune méthode applicationWillTerminate: n'est appelée!

Mise à jour: j'ai constaté que ce problème ne concerne que l'iPhone 5 et 4! (Périphériques non 64 bits!)

Mise à jour 2: lorsque l'incident se produit, j'essaie d'imprimer l'un des objets et de l'imprimer. Je reçois à nouveau la même erreur en mode débogage: malloc: *** mach_vm_map(size=1048576) failed (error code=3) *** error: can't allocate region securely *** set a breakpoint in malloc_error_break to debug.

------------------ Mettre à jour ------------------

Eh bien, j'ai trouvé quelque chose ici: j'ai inspecté mon application dans Instruments et j'ai détecté qu'elle occupe environ 200 Mo de mémoire dans iOS 8.4 et, étonnamment, dans iOS 9. * occupe 1,5 Go de mémoire !!! C'est quelque chose que je ne comprends pas! Une application utilise 200 Mo de mémoire dans iOS 8.4 et la même application utilise plus de 1,5 Go de mémoire sur iOS 9! Pas compréhensible du tout! Une idée?

13
Sunil Chauhan

Eh bien, je suppose que j'ai finalement trouvé le problème: C'est définitivement un problème de mémoire, mais je devais chercher où. J'ai constaté que j'utilisais deux labels tiers, à savoir: CXAHyperlinkLabel et STTweetLabel . Quand j'ai supprimé ceux-ci, mon application fonctionne parfaitement !! Le problème a été résolu, mais je ne comprends toujours pas pourquoi cela a fonctionné (et fonctionne toujours) très bien dans iOS 8.4 et consomme plus de 1,5 Go de mémoire dans iOS 9.0 et les versions ultérieures !! S'il y a des problèmes de mémoire (j'en ai trouvé et déjà corrigé), pourquoi cela fonctionne-t-il avec iOS 8. *. Donc, mon conseil à tous ceux qui ont de tels problèmes, je recommande d’utiliser UITextView pour les liens (je l’ai fait et son remplacement sympa).

3
Sunil Chauhan

Je viens de connaître le problème exact en tant que vous (xcode7, sur iPad 2, iOS 8.4).

<Error>: myApp(524,0x3cfda9dc) malloc: *** mach_vm_map(size=4060311552) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug

Alors, je décide de courir en mode débogage, et l'application se bloque à l'endroit le plus inattendu:

        [self.delegate discountPopupDoneClickWithDiscount:self.discount
                                                     type:self.discountType
                                         federalTaxEnable:self.federalTaxEnable
                                               federalTax:self.federalTax
                                                customTax:self.customTax];

Ensuite, j'ai essayé de savoir ce qui s'était passé ici, tapez po self.discount, puis self.discount (c'est une propriété avec le type NSDecimalNumber) renvoie une valeur très inhabituelle, comme <å: 0xba123adr>. Étrange, non? De plus, lorsque j'essaie po [self discount], cela donne NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance. Je ne sais trop quoi faire ici.

Solution:

Je met à jour la propriété d'escompte de ceci:

@property (nonatomic, assign) NSDecimalNumber *discount;

pour ça:

@property (nonatomic, strong) NSDecimalNumber *discount;

Et puis tout va bien. Bien sûr, ce n'est pas une réponse/solution exacte à votre question, mais cela peut vous aider/vous donner un indice sur ce qu'il faut faire, d'une manière ou d'une autre.

2
Eddie

Si étrange. J'ai eu un problème très similaire, où l'application augmenterait continuellement la consommation de mémoire jusqu'à ce qu'elle tombe finalement en panne, mais UNIQUEMENT sur iOS7 et iOS8. Effectivement, pas de problèmes avec iOS9 et plus.

Nous avons découvert qu’un simple paramètre de [UILabel setText:text] pour BEAUCOUP de collectionViewCells était la cause. WTF? Ils étaient faibles, non atomiques. Pourquoi?

Ran l'application dans Instruments: Allocations . Avant que les instruments ne tombent en panne, je pouvais isoler la consommation de mémoire en __NSStringDrawingEngine, +[NSParagraphStyle _defaultWritingDirection][UIFont fontWithName] ou quelque chose de ce genre.

Quoi qu’il en soit, le problème est que j’utilisais les types de styles de texte (par exemple, Titre 1, Titre 2, Corps, Légende, etc.). Semblait logique d'utiliser à l'époque. Mais, je suis passé à ceux-ci pour les polices système, et plus de problème de mémoire et plus de gel.

Si étrange.

1
James Perih