2012-08-08 3 views
0

내 안드로이드 앱의 메모리 사용에 약간의 문제가 있으며 무엇이 높은 메모리 사용량을 유발하는지 모릅니다. 내 응용 프로그램을 시작할 때 최대 40MB RAM (DDMS라고 함)을 사용하고 다른 응용 프로그램을 열면 응용 프로그램이 즉시 종료됩니다.android memory issue - 앱에서 많은 RAM을 사용합니다.

메모리 누수에 대해 많이 읽었고 드로어 블 바인딩을 해제하고 GC를 실행하는 등의 작업을 수행했지만 내 앱에는 여전히 많은 메모리가 필요합니다.

내 응용 프로그램에는 약 3MB의 리소스가 있지만 afaik는 주문형 RAM에로드됩니다. 내가 잘못? 이로 인해 40MB의 RAM 사용이 가능합니까?

편집 : 내가 원하는만큼 자주 각 활동의 방향을 전환 할 수 있기 때문에 나는 메모리 누수가없는 것 같아요 응용 프로그램이 낮은 메모리 때문에 충돌하지 않습니다. 그래서 그것은 메모리 리크가 될 수 없습니다, 그렇죠?

답변

0

당신은 안드로이드 응용 프로그램에 메모리 관리를해야합니다. 더 이상 사용되지 않는 리소스를 비우십시오. 활동 스택을 추적 할 onStop(), onDestroy(), onPause() 메소드를 재정의하십시오.

OnDestroy() 메서드에서 availed 리소스를 모두 해제하면 다른 응용 프로그램에서 동일한 리소스를 다시 사용할 수 있습니다.

+0

나는 onDestroy (새로운 것을 시작한 후에 활동을 끝내기에 충분하다고 생각한다.)를 풀어서 drawable (선형 레이아웃의 배경 이미지)을 호출하고 GC를 호출한다. – anel

0

어떤 데이터 구조를 사용하고 있습니까? 매우 큰 데이터 구조 (긴 목록, 큰 그래프, 큰지도 등)는 RAM을 빨리 소모 할 수 있습니다.

앱의 방향 변경에 대한 컨텍스트가 누출 될 수도 있습니다.

레이아웃이 실제로 무거운 데이터 구조와 함께 심하게 설계되었을 수도 있습니다.

앱이 무엇을하려고하는지 조금 더 설명하지 않으면 알기가 어렵습니다.

+0

큰 데이터 구조를 사용하지 않는다. 나는 많은 레이아웃 파일과 드로어 블을 가지고 있지만, 각각은 작다 (그리고 레이아웃은 매우 복잡하지 않다). 나는 스플래시 화면과 웹 서비스에 연결되는 작은 loginActivity를 가지고있다. 성공적으로 로그인 한 후에는 복잡한 활동이 아닌 다른 활동이 있습니다. 많은 수의 드로어 블은 이미지를 선택하기위한 것이며 단추를 누를 때까지로드되지 않습니다. 하지만 그 전에이 앱은 이미 40MB RAM을 사용합니다. – anel

+0

매우 이상합니다. 미안해. 나는 지금 생각이 다 떨어진다. –