2015-01-09 1 views
3

안드로이드 애플리케이션의 크기를 제한 할 수 있습니까? (Manifest에서 말하십시오)Android 애플리케이션 메모리 크기 제한 실행

사례 : 클라이언트가 앱이 20MB를 초과하지 않도록합니다. 그러나 장치에서 사용 가능한 메모리는 50MB입니다. 애플리케이션은 증가하는 크기를 유지하는 활동 중 하나에서 웹보기를 사용하므로 전체 앱 크기가 증가합니다. 이렇게 할 수 있습니다. webview가 필요하지 않은 경우 (이미 null로 설정) 전체 메모리 크기가 30MB를 초과합니다. GC는 강제 호출됩니까? 참고 : 다른 구성 요소 및 활동이 5MB 이상의 메모리를 필요로하지 않음을 확신합니다.

답변

6

안드로이드 응용 프로그램의 크기를 제한 할 수 있습니까? (매니페스트에서 말하기)

실제로는 아닙니다. 앱의 힙 한도는 앱이 아니라 기기에 의해 결정됩니다. 앱에서 수행 할 수있는 유일한 작업은 보다 큰 힙을 요청하는 android:largeHeap입니다. 보통보다 작은 힙을 요청할 방법이 없습니다.

또한 NDK를 통한 할당은 힙 제한에 포함되지 않습니다. 그것을 위해, 당신은 완전히 당신 자신의 것입니다.

클라이언트는하지 초과 할 응용 프로그램을 원하는 20메가바이트

클라이언트가 적어도 달빅 내에서 할당을 위해,이 제한을 적용 할 수 있습니다 자신의 장치 또는 ROM의 모드를 구축하는 환영 말한다/ART 가상 시스템.

또는 클라이언트가 안드로이드를 사용해서는 안되며, 임베디드 리눅스와 같이 메모리 사용 방법을 훨씬 더 잘 제어 할 수 있어야합니다.

하지만 사용 가능한 메모리는 50MB입니다.

장치의 사용 가능한 시스템 RAM 양은 응용 프로그램의 힙 제한에 직접 연결되지 않습니다.

webview가 필요하지 않은 경우 (이미 null로 설정) 및 전체 메모리 크기가 30MB를 초과하는 경우. GC는 강제 호출됩니까?

직접 구현할 수 있습니다. 일반적으로 작동하지 않지만 구현할 수는 있습니다.

일단 가상 컴퓨터가 OS에서 메모리를 할당하면 해당 메모리가 더 이상 사용되지 않을 때만 해당 메모리가 OS로 반환됩니다. Android 4.4 이상에서 사용되는 Dalvik은 힙을 압축하지 않으므로 일부 메모리가 가비지 수집 될 수는 있지만 전체 힙 크기가 줄어들지는 않습니다.

또한 WebView에 의해 소비되는 시스템 RAM 중 일부는 기본 WebKit/Blink 라이브러리와 관련됩니다. 내가 이해하는 바와 같이, 처음에 WebView을 사용할 때 동적으로로드됩니다. 따라서 첫 번째 WebView에로드하는 데 시간이 걸릴 수 있습니다. 그러나 이러한 코드 세그먼트는 프로세스가 종료 될 때까지 릴리스되지 않을 것입니다.

+0

이와 같은 자세한 답변을 보내 주셔서 감사합니다. – vipulfb

관련 문제