아시다시피 Android는 응용 프로그램 메모리 크기에 제한을 설정합니다. 대개 16M입니다. 그러나 나는 혼란 스럽다 : 1) 누가 한도를 수행 하는가? 누가 OOM을 생성하고 앱을 죽입니까? 2) 16M에는 Java 힙과 원시 힙 또는 Java 힙이 모두 포함됩니까?Android OOM은 어떻게 작동합니까?
원래 DalvikVM이 기본 힙을 제어 할 수 있다고 생각하지 않기 때문에 제한을 수행하는 DalvikVM이고 16M 만 Java 힙을 포함한다고 생각했습니다. 그러나 일부 기사에서는 네이티브 힙에 비트 맵 메모리가 포함되어 있다고 말했습니다. 그래서, 내 질문에 어떻게 DalvikVM 네이티브 힙을 관리 할 수 있습니다? Android OOM은 어떻게 작동합니까?
나를 혼란스럽게 만드는 것은 비트 맵입니다. 당신의 설명에 감사드립니다! – Dagang
또 다른 질문은 Java 힙에 대한 제한이있는 경우 JNI 응용 프로그램이 16M보다 훨씬 더 큰 메모리 크기를 가질 수 있다는 것입니다. – Dagang
@Todd : JNI 코드는 장치에서 사용할 수있는만큼의 RAM을 할당 할 수 있습니다. 그렇다고해서 사용자 관점에서 볼 때, 힙을 대량으로 사용하는 앱이 멀티 태스킹을 방해하는 것처럼 좋은 아이디어는 아닙니다. – CommonsWare