메모리를 해제하는 데 문제가 있습니다. Hashmap
에 Bitmap
을 추가했으며 비트 맵의 수가 꽤 큽니다. 이러한 이유로 저는 OutOfMemoryError
을 얻고 있습니다. 그래서 이것을 위해 적어도 Collection
에서 사용되는 Bitmap
을 해제하기로 결정했습니다. 메모리 부족이나 시스템의 힙 메모리가 부족합니다.메모리 관리 논리의 사용 가능한 총 메모리
현재 메모리를 사용할 수 있도록 "ActivityManager.MemoryInfo.availMem"을 사용했지만 총 RAM 크기의 메모리를 사용할 수 있으며 힙 메모리는 제공하지 않습니다. 그리고이 메모리가 업데이트에서 비트 맵을 릴리스 할 때 업데이트되지 않는 것으로 나타났습니다.
그런 다음 나는이 세 가지 방법을 사용하고 있습니다 :Debug.getNativeHeapAllocatedSize()
Debug.getNativeHeapFreeSize()
Debug.getNativeHeapSize()
하지만 난 NativeHeapSize 일부 일정 수준까지 증가에 간다 발견, OutOfMemoryError
이 발생한다는 후 변경, 16 메가바이트을 말한다. 이 또한 NativeHeapAllocatedSize
및 getNativeHeapSize
은 Bitmap
을 Collection
에서 릴리스 할 때 감소하지 않는 것으로 나타났습니다.
어떻게이 문제를 해결할 수 있습니까?
내 문제는 현재 사용 가능한 메모리가 임계 값 메모리를 초과하면 컬렉션에서 Bitmap
을 해제하고 garbage collection은 메모리를 회수하고 무료로 사용할 수 있도록 사용 가능한 최대 응용 프로그램 메모리와 현재 사용 가능한 메모리를 계산하려고합니다. 오류가 발생하지 않습니다.
http://developer.android.com/training/displaying-bitmaps/index.html – Michaeldcooney