2015-09-24 9 views
13

wiem, że problem jest związany z alokacji pamięci, ale pobierz go tylko iOS 9, XCode 7. W XCode 6.4, iOS 8.4, działa idealnie, bez problemu w żaden sposób. W iOS 9, XCode 7, po prostu bardzo często ulega awarii, podając ten błąd.(XCode 7 + 9 + iOS iPhone 4s/tylko iPhone5) Problem: "malloc: *** mach_vm_map (size = 1048576) nie powiodło się (kod błędu = 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

Wszelkie sugestie? Pracuję nad problemami z pamięcią, ale zastanawiam się, czy było zbyt wiele problemów z pamięcią, dlaczego więc działa w systemie iOS 8.4, a nie w systemie iOS 9?

Również mam całe UI Whited out! Podobnie jak pasek nawigacji nie ma tytułu, niestandardowy pasek zakładek (RDVTabBar) nie jest widoczny, jednak istnieje inny kontroler widoku (reaguje na zdarzenia dotykowe, można dotknąć tego obszaru, a przycisk umieszczony w tym obszarze działa!).

P.S. Nie otrzymuję ostrzeżenia o zapamiętywaniu, ani nie wywoływana jest metoda applicationWillTerminate:!

Aktualizacja: Okazało się, że ten problem występuje w iPhone 5 i tylko 4s! (urządzenia dla 64bit!)

UPDATE 2: Kiedy katastrofa nastąpi, próbuję wydrukować jeden obiekt i go wydrukować, znowu ten sam błąd w trybie debugowania: 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.

------------------ Aktualizacja ------------------

Cóż, znalazłem coś tutaj: Sprawdziłem moją aplikację w Instruments i wykryłem, że zajmuje ona około 200 MB pamięci w iOS 8.4, a zaskakująco iOS 9. * zajmuje 1,5 GB pamięci !!! To jest coś, czego nie rozumiem! Jedna aplikacja zajmuje 200 MB pamięci w iOS 8.4, a ta sama aplikacja zajmuje ponad 1,5 GB pamięci na iOS 9! W ogóle nie zrozumiałe! Dowolny pomysł?

+0

Proszę pokazać StackTrace. – trojanfoe

+0

Dziwne jest to, że przez większość czasu nie otrzymuję żadnego stosu. Tylko trzy linie i aplikacja zniknęła! –

+0

Zrób jak sugeruje błąd i ustaw punkt przerwania w 'malloc_error_break' i wydrukuj z niego ślad stosu. – casey

Odpowiedz

3

Cóż, myślę, że w końcu znaleźć ten problem: jest to z pewnością problem pamięci, ale musiałem szukać gdzie.Zauważyłem, że używam dwóch zewnętrznych etykiet, a mianowicie: CXAHyperlinkLabel i STTweetLabel. Kiedy usunąłem te, moja aplikacja działa dobrze !! Problem został rozwiązany, ale nadal jestem zdezorientowany, dlaczego zadziałało (i nadal działa) świetnie w iOS 8.4 i zużywa ponad 1,5 GB pamięci w iOS 9.0 i wyższych! Jeśli ma jakieś problemy z pamięcią (niektóre z nich już znalazłem i naprawiłem), dlaczego współpracowało z iOS 8. *. Tak więc, moja rada dla każdego faceta, który ma takie problemy, polecam używanie UITextView dla linków (zrobiłem to i jego ładny zamiennik).

+0

Używam linku tekstowego do odsyłacza, ale mimo to problem dotyczył innego rozwiązania? –

2

Właśnie doświadczyłem dokładnie problem jak Ty (xcode7 na 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 

Więc ja decyduję pobiegł na trybie debugowania, a awaria aplikacji w najbardziej niespodziewanym miejscu:

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

Potem próbował się dowiedzieć, co się tu stało, typ po self.discount okazują self.discount (jest to właściwość o typie NSDecimalNumber) zwraca bardzo nietypową wartość, np. <å: 0xba123adr>. Dziwne, prawda? Ponadto, gdy próbuję po [self discount], daje to NSDecimalNumber [_NSKeyedCoderOldStyleArray initialize]: Unrecognized selector send to instance. Nie ma pojęcia, co tu robić.

Rozwiązanie:

zaktualizować właściwość dyskonta z tego:

@property (nonatomic, assign) NSDecimalNumber *discount; 

do tego:

@property (nonatomic, strong) NSDecimalNumber *discount; 

I to w porządku Wszystko. Oczywiście nie jest to dokładna odpowiedź/rozwiązanie twojego pytania, ale może to pomóc/dać ci wskazówkę, co zrobić.

+0

Dzięki, ale nie w mojej aplikacji. –

+0

Lepiej uruchom aplikację w symulatorze, próbując odtworzyć awarię. Następnie ustaw debugowanie w miejscu, w którym nastąpił awaria i sprawdź wszystko, co tylko możliwe. – Eddie

1

Dziwne. Miałem bardzo podobny problem, ponieważ aplikacja stale zwiększała zużycie pamięci, aż do momentu awarii, ale TYLKO na iOS7 i iOS8. Rzeczywiście, bez problemów z iOS9 i nowszymi.

Okazało się, że proste ustawienie [UILabel setText:text] na wiele kolekcjiViewCells było przyczyną. WTF? Byli słabi, nieatomowi. Czemu?

Uruchomiono aplikację w Instrumenty: Przydziały. Zanim Instruments ostatecznie rozbił się, byłem w stanie wyizolować zużycie pamięci do pewnego stopnia.

W każdym razie okazuje się, że korzystałem z typów stylów tekstu (np. Tytuł 1, tytuł 2, treść, podpis itp.). Wydaje się logiczne w użyciu w tym czasie. Ale przełączyłem je na czcionki systemowe i przestałem mieć problemy z pamięcią i nie marznąłem.

Dziwne.

-1

zrobił użyć NSZombieObject włączyć, nie wyda przedmiot zombie i może powodować crash.i nadzieję, że to pomoże Ci

Powiązane problemy