2013-06-09 3 views
9

우리 앱이 앱 스토어에 있습니다. 일부 사용자가 겪고있는 메모리 부족 문제를 인식하고 싶습니다. 메모리 부족 사고를 100 % 인식 할 수있는 방법이 없음을 알고 있습니다. applicationDidReceiveMemoryWarning에서 일부 논리를 수행하여 이러한 크래시를 인식 할 수있는 방법이 있습니까? (나는 개발 시간 동안 xcode에서 그것을 발견하는 것에 대해 이야기하지 않는다. 실제 사용자로부터의 메모리 충돌을 인식하고 파일에 로그를 남기는 코드에 대해 이야기하고있다.)메모리 부족 사고 (IOS)

+0

사용 도구 (cmd + I)는 할당을 따릅니다. – Levi

+0

비록 기술적 인 부분이 있습니다. 메모리가 부족하여 앱이 종료되는 것이 실제로는 '크래시'가 아닙니다 (사용자에게는 유사하지만). – occulus

+0

일반적으로 아니요. 그러나 메모리 부족 상황의 가장 큰 원인은 UIImage를 부적절하게 사용하여 동시에 많은 양의 이미지가 메모리에 저장되는 결과를 초래합니다. 다른 가능성있는 원인은 루프를 발생시키는 방식으로 다른보기 컨트롤러를 참조하는 ViewController에서 ref 카운트 루프입니다. 문제는 제품이 출시되고 최종 사용자 장치에서 실행되는 경우에만 이러한 문제가 제품에 표시되는 경우가 종종 있습니다. 매우 신중한 개발 프로세스 및 코드 검토만으로 이러한 문제를 예방할 수 있습니다. – MoDJ

답변

0

applicationWillTerminate 메시지를 당신의 app에서 찾아라. 대리자. 앱이 시스템에 의해 종료 된 경우 (예 : 메모리 부족으로 인해 발생) 사용자가 홈 키를 눌러 앱을 평소와 다르게 떠나는 경우에는 호출되지 않습니다. 참고 : 앱이 백그라운드에 있고 메모리가 부족한 경우 앱에 메시지가 전송되지 않고 앱이 종료됩니다.

특히 이전 버전의 iOS의 경우 YMMV가 위의 내용이 정확한지 확인하기 위해 조사 할 가치가 있습니다.

this blog post의 이미지는 매우 유익합니다 (약간 날짜 임).

더 많은 정보는 응용 프로그램에서 당신에게 누출의 번호가 표시됩니다 How to know whether app is terminated by user or iOS (after 10min background)

+2

응용 프로그램이 메모리 (포 그라운드에있을 때)로 인해 종료 될 때마다 applicationWillTerminate가 발생합니까? 또한 사용자가 앱을 완전히 닫을 때도 호출됩니다 (백그라운드로 이동하지 않음)? – AJ222

-3

섹션 분석 첫째 엑스 코드의 상단 메뉴 바에서 제품을 클릭하여 응용 프로그램을 분석하고 클릭 볼 수 있습니다 누출이 일어난 곳으로 데려다주세요. 이것이 메모리 누수를 찾아 수정하는 방법입니다. 둘째로 위의 코드는 작동하지 않으며 충돌이 발생한 곳의 컨트롤러를보고 해제 할 개체가 남아 있는지 확인합니다. 도움이되면 문제를 해결하는 데 도움이 될 수 있기를 바랍니다.

+2

다른 질문에 답했습니다. 그는 심지어 자신의 게시물에서 "나는 개발 기간 동안 xcode에서 그것을 찾는 것에 대해 이야기하고 있지 않다"라고 말했다. – occulus

-2

실제 time.Below 2에서 아이폰 OS 응용 프로그램의 성능을 추적 할 수 좋은 타사 라이브러리도 같은 범주로 알려져 있습니다

  1. Google 웹 로그 분석은
  2. Crittercism

그들은 추적 사용자 기기의 계정 오류 보고서를 계정에 보내십시오. 메모리 부족으로 인해 충돌이 발생했음을 알리시기 바랍니다!

https://developers.google.com/analytics/devguides/collection/ios/

https://www.crittercism.com/

희망이 어느 정도 문제를 해결할 수 있습니다.

3

내가 나에게 OOM 추적을주는 서비스 나 라이브러리를 찾고있는 동안, 나는 단지 페이스 북 엔지니어링에서이 문서를 찾을 수 : 아이디어 앱이 필요 이유를 추론하는 것입니다

https://code.facebook.com/posts/1146930688654547/reducing-fooms-in-the-facebook-ios-app/ (앱이 백그라운드에서 실행중인 경우, 앱/OS 업데이트가있는 경우 등 ...) 여러 가지 측면을 검사합니다.

이전 앱 종료를 강제 할 수있는 다른 가능한 이유를 모두 버리면 그 이유가 메모리 부족 배경인지 또는 메모리가없는 전경인지 알 수 있습니다.

Facebook 기사 절차를 구현하는 라이브러리가 있으면 좋을 것입니다. 하지만 요즘에는 아무 것도 찾을 수 없었습니다. 아마도이 일을 어렵게 만들거나 SDK로 추가하는 것은 불가능할 수도 있습니다.

누구든지 서비스를 알고 있다면 의견이나 새로운 대답으로 모든 사람과 공유하십시오.

편집 : 나는 페이스 북 포스트 절차의 구현이 github에 (https://github.com/jflinter/JRFMemoryNoodler)를 발견했다

. 아직 시도하지는 않았지만 시도해보기 위해 앱에 배포 할 것입니다.

+0

당신은 그것을 끝내는 것을 끝내 었 느냐? 어떤 성공? – Johanisma

+0

@Johanisma, 아니, 우리는이 라이브러리 (JRFMemoryNoodler)로 애플 리케이션을 배포하려고했지만 빌드를 닫기 직전에 앱을 제거하기로 결정했습니다. 개발 중 앱 충돌을 강요했을 때이 도구가 다른 OOM을 감지하는 데 도움이 될지 확신 할 수 없었습니다 (충돌을 올바르게 해석하지 못했거나 제대로 작동하지 않았을 수 있습니다). 무언가를 찾으면 여전히 OOM이 있기 때문에 그것을 공유하십시오. –