2015-09-24 8 views
13

Ich weiß, das Problem bezieht sich auf Speicherzuordnungen, aber ich Holen Sie es in nur iOS 9, XCode 7. In XCode 6.4, iOS 8.4, funktioniert es einfach perfekt, überhaupt kein Problem. In iOS 9, XCode 7, stürzt es nur sehr häufig ab, wodurch dieser Fehler auftritt.(XCode 7 + iOS 9 + iPhone 4s/iPhone5 nur) Problem: "malloc: *** mach_vm_map (Größe = 1048576) fehlgeschlagen (Fehlercode = 3)"

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

Irgendwelche Vorschläge? Ich arbeite an Speicherproblemen, aber ich frage mich, ob es zu viele Speicherprobleme gab, warum funktioniert es dann in iOS 8.4 und nicht in iOS 9?

Auch ich bekomme alle meine UI whited out! Wie die Navigationsleiste hat keinen Titel, benutzerdefinierte Tabbar (RDVTabBar) ist nicht sichtbar, aber andere View-Controller ist da (es reagiert auf die Berührungsereignisse, können Sie auf diesen Bereich tippen und die Schaltfläche in diesem Bereich wirkt!).

P.S. Ich bekomme keine Speicherwarnung jemals, weder applicationWillTerminate: Methode wird aufgerufen!

Update: Ich habe festgestellt, dass dieses Problem nur bei iPhone 5 und 4s auftritt! (Nicht-64-Bit-Geräte!)

Update 2: Wenn der Absturz passiert, versuche ich eines der Objekte zu drucken und es zu drucken, bekomme ich wieder den gleichen Fehler im Debug-Modus: 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.

------------------ ------------------ aktualisieren

Nun, habe ich etwas gefunden hier: Ich habe meine App in Instruments überprüft und festgestellt, dass es etwa 200 MB Speicher in iOS 8.4 und überraschend iOS 9 belegt. * belegt 1,5 GB des Speichers !!! Das verstehe ich nicht! Eine App benötigt 200 MB Speicher in iOS 8.4 und die gleiche App benötigt über 1,5 GB Speicherplatz auf iOS 9! Überhaupt nicht verständlich! Irgendeine Idee?

+0

Bitte zeigen Sie helfen hoffen. – trojanfoe

+0

Das Merkwürdige ist, dass ich die meiste Zeit keinen Stacktrace bekomme. Nur ein bisschen drei Zeilen und die App ist weg! –

+0

Führen Sie den Fehlervorschlag aus und setzen Sie einen Haltepunkt in 'malloc_error_break' und drucken Sie von dort eine Stapelspur. – casey

Antwort

3

Nun, ich denke, ich habe endlich das Problem gefunden: Es ist definitiv Speicherproblem, aber ich musste wo suchen.Ich habe festgestellt, dass ich zwei Drittanbieter-Etiketten verwende: CXAHyperlinkLabel und STTweetLabel. Als ich diese entfernte, funktioniert meine App einfach gut !! Das Problem wurde gelöst, aber ich bin immer noch verwirrt, warum es in iOS 8.4 funktioniert hat (und immer noch funktioniert) und in iOS 9.0 und höher mehr als 1,5 GB Speicher verbraucht !! Wenn es Probleme mit dem Speicher gibt (ich habe einige gefunden und behoben, immer noch), warum hat es mit iOS 8 funktioniert. *. Also, mein Rat an alle Kollegen, die solche Probleme haben, empfehle ich UITextView für Links (ich tat es und seine schöne Ersetzung).

+0

Ich benutze Textview für Link, aber immer noch dieses Problem aufgetreten andere Lösung? –

2

Ich habe gerade das genaue Problem als Sie erlebt (xcode7, auf 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 

So entscheide ich mich ran auf den Debug-Modus, und die App Absturz in der unerwartetsten Ort:

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

Dann habe ich versucht, um herauszufinden, was hier passiert ist, geben po self.discount, entpuppen self.discount (Es ist eine Eigenschaft mit NSDecimalNumber Typ) zurückgeben einen sehr ungewöhnlichen Wert, wie <å: 0xba123adr>. Seltsam, oder? Auch, wenn ich versuche, po [self discount], es Ausbeute NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance. Ziemlich viel ahnungslos was hier zu tun ist.

Lösung:

ich den Rabatt Eigenschaft von diesem Update:

@property (nonatomic, assign) NSDecimalNumber *discount; 

dazu:

@property (nonatomic, strong) NSDecimalNumber *discount; 

Und dann fein ist alles. Natürlich ist dies keine exakte Antwort/Lösung für Ihre Frage, aber dies kann Ihnen helfen/gibt Ihnen einen Hinweis darauf, was Sie tun sollen.

+0

Danke, aber das ist nicht der Fall in meiner App. –

+0

Sie sollten Ihre App besser im Simulator ausführen und versuchen, den Absturz zu reproduzieren. Dann setze das Debug an der Stelle, wo es abstürzt und überprüfe so viel wie möglich. – Eddie

1

So seltsam. Ich hatte ein sehr ähnliches Problem, bei dem die App den Speicherverbrauch kontinuierlich steigern würde, bis sie schließlich abstürzen würde, aber NUR auf iOS7 und iOS8. Sicher genug, keine Probleme mit iOS9 und höher.

Gefunden, dass eine einfache Einstellung von [UILabel setText:text] für eine Menge von collectionViewCells die Ursache war. WTF? Sie waren schwach, nichtatomisch. Warum?

Die App lief in Instrumente: Zuordnungen. Bevor die Instrumente schließlich abgestürzt sind, konnte ich den Speicherverbrauch auf __NSStringDrawingEngine, +[NSParagraphStyle _defaultWritingDirection][UIFont fontWithName] oder etwas Ähnliches isolieren.

Wie auch immer, es stellt sich heraus, dass ich die Textarten verwendet habe (zB Titel 1, Titel 2, Text, Beschriftung, etc). Offensichtlich logisch zu der Zeit zu verwenden. Aber ich habe diese auf Systemfonts umgestellt, und kein Speicherproblem mehr und kein Einfrieren mehr.

So seltsam.

-1

haben Sie die NSZombieObject ermöglichen verwenden, wird es nicht die Zombie-Objekt freigeben, und verursachen diese crash.i es Ihnen die Stacktrace