답변:
당신은 사용할 수 있습니다 largeHeap이 = "사실은"안드로이드 더 큰 힙 크기를 요청할 수 있지만, 이것은 어떤 사전 벌집 장치에서 작동하지 않습니다. 2.3 이전 장치에서는 VMRuntime 클래스를 사용할 수 있지만 Gingerbread 이상에서는 작동하지 않습니다.
NDK는 SDK와 같은 메모리 제한을 부과하지 않기 때문에 가능한 한 큰 제한을 갖는 유일한 방법은 NDK를 통해 메모리를 많이 사용하는 작업을 수행하는 것입니다.
또는 현재보고있는 모델 부분 만로드하고 나머지는 필요에 따라로드하고 메모리에서 사용하지 않는 부분은 제거 할 수 있습니다. 그러나 앱에 따라 불가능할 수도 있습니다.
largeHeap=trueFTW
응용 프로그램에서 사용할 수있는이 메모리 크기를 늘리는 방법이 있습니까?
API 레벨 11 +에서 실행중인 응용 프로그램을 할 수 있습니다 android:largeHeap="true"온 <application>큰 정상보다 힙 크기를 요청하는 매니페스트의 요소, 그리고 getLargeMemoryClass()에는 ActivityManager힙이라고 얼마나 큰 당신을 말할 것이다. 하나:
이것은 API 레벨 11 이상에서만 작동합니다 (즉, Honeycomb 이상).
큰 힙이 얼마나 큰지 보장 할 수 없습니다
사용자는 대용량 힙 요청을 인식하게되는데, 이는 다른 앱이 RAM에서 강제로 다른 앱의 프로세스를 종료하여 큰 힙에서 사용하기 위해 시스템 RAM을 비우기 때문입니다.
# 3으로 인해 android:largeHeap악용 될 것으로 예상 되므로 나중에이 기능에 대한 지원이 중단되거나 설치시 사용자에게 경고 할 수 있습니다 (예 : 특별 권한을 요청해야 함) )
현재이 기능은 간략하게 문서화되어 있습니다.
inBitmap에를 BitmapOptions). 그 외에도 모든 참조를 제거하면 결국 가비지 수집됩니다.
android:largeHeap. 그러나 큰 힙을 요청하면 다른 응용 프로그램 프로세스가 다른 방법으로 필요했던 것보다 빨리 종료되도록하여 사용자 환경이 전반적으로 손상 될 수 있습니다.
힙 크기를 동적으로 늘릴 수 없습니다.
android:largeHeap="true"매니페스트에서 를 사용하여 더 많이 사용하도록 요청할 수 있습니다 .
또한을 사용할 수 native memory (NDK & JNI)있으므로 실제로 힙 크기 제한을 무시합니다.
여기 내가 작성한 몇 가지 게시물이 있습니다.
그리고 여기 내가 만든 라이브러리가 있습니다 :
Android OS에 따라 두 가지 방법으로 수행 할 수 있습니다.
android:largeHeap="true"더 큰 힙 크기를 요청하는 안드로이드 매니페스트의 응용 프로그램 태그에, 그러나 이것은 어떤 사전 벌집 장치에서 작동하지 않습니다.VMRuntime.getRuntime().setMinimumHeapSize(BIGGER_SIZE);
HeapSize를 설정하기 전에 다른 응용 프로그램이나 OS 기능에 영향을 미치지 않는 적절한 크기를 입력했는지 확인하십시오. 설정하기 전에 앱의 크기를 확인한 다음 작업을 수행하기 위해 크기를 설정하십시오. 그렇지 않으면 다른 앱이 영향을 줄 수있는 메모리를 너무 많이 사용하지 마십시오.
참조 : http://dwij.co.in/increase-heap-size-of-android-application