때때로 앱의 힙 메모리 제한을 우회하여 허용되는 것보다 많은 것을 사용해야합니다.자바를 통한 기본 메모리 사용
나는 네이티브 메모리 (힙 메모리가 아닌 비 관리 메모리)에 바이트를 저장할 캐싱 메커니즘을 포함하는 솔루션을 생각해 보았습니다.
물론 시스템의 최대 사용 가능한 크기를 고려할 것입니다.
그래서, direct buffers에 대해 조금 알고, 내가 기본 메모리에 바이트 배열을 저장하기 위해 사용 :
final ByteBuffer nativeBytes=ByteBuffer.allocateDirect(bytes.length);
nativeBytes.put(bytes);
그러나, 안드로이드에 대한 것 같아를,이에 사용되는 메모리는 힙에 사용된다 네이티브 메모리가 아닙니다.
무슨 일입니까? 네이티브 메모리에서 데이터를로드하는 &을 저장하기위한 쉬운 대안이 있습니까?
"원시 메모리"와 같은 것은 없습니다. 메모리는 네이티브 대 바이트 코드에 대한 이해가 없다. 이것은 당신의 질문을 아주 불분명하게 만듭니다. – mah
관리되는 메모리 및 관리되지 않는 메모리가 있습니다. 관리되는 메모리에는 약 48MB의 제한이 있으며 전달할 때 OOM 예외가 발생합니다. 관리되지 않는 메모리는 장치의 RAM 크기에 관한 것이지만 아직 릴리스해야합니다. NDK 또는 OpenGL을 사용할 때 이러한 기능을 사용할 수 있습니다. –
필자는이 방법을 쉽게 (주석이 아닌 대답 일 수도 있지만) 쉽게 호출하지 않을 것이지만, 네이티브 메소드가 malloc()과 free()를 수행하는 클래스를 생성 할 수있는 것처럼 사용자의 설명에서 들립니다. DalvikVM이 메모리를 관리하는 방법에 대한 설명이 정확하다면, DVM 체크를 우회 할 수 있습니다 (안드로이드가이를 막기위한 적극적인 조치를 취하지 않는다고 가정 할 때). 해결해야 할 문제는 Java에서 해당 메모리에 액세스하는 방법입니다. – mah