주된 스레드의 메모리에 실제로 큰 파일을 읽었습니다 (단순한 dataWithContentsOfFile:
메서드뿐만 아니라 일부 데이터 조작도하고있었습니다). 그리고 내 응용 프로그램이 손상되었습니다. 이 프로세스를 배경 스레드로 옮기면 앱이 더 이상 충돌하지 않습니다. 유일한 일은 내가 얻는 NSData
이 nil
이라는 것입니다.큰 NSData를 가진 메모리 문제
메인 스레드에 영향을주지 않고 백그라운드 스레드 만 중단 될 수 있습니까, 아니면 뭔가 빠졌습니까? 또한이 동작에 의의를두고 응용 프로그램을 중단하지 않고 NSData
이 nil
일 때 오류 메시지 만 표시 할 수 있습니까? 미리 감사드립니다.
편집 :
내가 얻을 로그는 다음과 같습니다
는의 malloc : *이 실패의 mmap (= 629,800,960은 크기) (오류 코드 = 12) 오류 : 지역 를 할당 할 수 없습니다 * * 디버깅 할 malloc_error_break에 중단 점 설정
사용중인 파일의 크기는 약 250MB입니다.
주 스레드에서 충돌하는 이유를 알고 있습니다. 내 질문은, 왜 보조 스레드에서 충돌하지 않았다는 것입니다?
충돌 할 때 나타나는 오류 메시지는 무엇입니까? 파일이 얼마나 큽니까? 사용중인 코드는 무엇입니까? 이 정보가 없으면 누구나 말하는 것은 순수한 추측 일뿐입니다. – borrrden
몇 가지 코드를 알려 주실 수 있습니까? – zahreelay