2010-12-29 5 views
0

서버에서 600-700KB의 XML 데이터를받는 응용 프로그램을 개발 중입니다. 그 데이터에서 조작을해야만 한 번 메모리가 600 KB에서 2 M.B로 증가합니다. 이미 응용 프로그램에서 4MB의 메모리를 사용하고 있습니다. XML 데이터를 처리하는 동안 일부 조작 (미리 파싱)을 수행하면 메모리가 600KB에서 2MB로 증가하고 결국 600KB로 줄어 듭니다. 메모리 증가로 인해 응용 프로그램에서 메모리 경고를 제공합니다. 메모리 경고를받는 동안 내비게이션 컨트롤러에서 모든 뷰를 해제하지만 메모리는 1MB 만 릴리스합니다. 모든보기를 릴리스하더라도 응용 프로그램이 충돌합니다. 이 문제에 대해 저를 도우십시오. iPad 4.2에서 발생합니다.메모리 문제 iPad 4.2가 충돌 함

미리 감사드립니다.

+1

6 ~ 7MB의 메모리를 사용하면 앱이 다운 될 정도로 소리가 나지 않습니다. 앱의 메모리 부족으로 인한 실제 충돌 원인을 확인 했습니까 (충돌 로그보기)? –

+0

나중에 확인했습니다. 멀티 태스킹 기능이있는 iPad 4.2에서만 발생합니다. 내가 백그라운드에서 실행중인 응용 프로그램의 수를 줄이면. 내 응용 프로그램이 잘 작동합니다. –

답변

1

여기에 마법의 답이 없습니다. 당신은 너무 많은 메모리를 사용하고 있으며, 더 적은 메모리를 사용하는 방법을 찾아야합니다. 응용 프로그램에 대해 더 많이 알지 못하면 거의 구체화하기 어렵습니다. 거의 1Mb의 데이터를로드하고 주변에서 놀고 있으면 도움이되지 않습니다.

아마도 데이터를 메모리에 모두로드하는 대신 스트리밍 할 수 있을까요? 도움이되는 오픈 소스 라이브러리가 있습니다 : StreamingXMLParser.

또한보기가 거대 해 보입니다 (메가 바이트 이상). 거기에서 수행 할 수있는 최적화가 있다고 확신합니다. 악기를 사용하여 메모리가 사용되는 곳을 확인하십시오.

+0

실제로 다섯 번째보기 컨트롤러에서 데이터를로드하고 있습니다. 탐색 컨트롤러를 사용하여보기 컨트롤러를로드하고 있습니다. 내가받은 데이터에서 많은 특수 문자를 교체해야하기 때문에 스트리밍으로 데이터를 구문 분석 할 수 없습니다. 내 질문은 어떻게 다른 응용 프로그램이 완벽하게 작동하는지입니다. 그들은 응용 프로그램을 실행하는 데 많은 메모리를 차지하지 않습니다? –

+0

우리는 당신이 우리에게 말한 것을 근거로 말할 수 없습니다. 너무 많은 메모리를 사용하여 앱을 비우는 경우 적은 것을 사용하는 방법을 찾아야합니다. 다른 앱이하는 일은 부적절합니다. 메모리가 사용되는 위치를 찾으려면 앱을 측정 (프로파일 링)해야하며 생각할 때 메모리를 해제하고 많이 사용하는 위치를 최적화해야합니다. –

0

변경 될 수있는 매개 변수 값으로 인해 1MB 만 릴리스되거나 사용중인 언어와 관련이있는 경우 개발 세션 중에 수동으로 가비지 수집 작업을 시작해야 할 수 있습니다. 가능한 경우 xml 입력을 분류하거나 스크립트 나 코드에 액세스 할 수있는 방식으로 저장되어있는 경우 XML의 압축 또는 압축을 호출 할 수 있습니다.