5M 크기의 3D OBJ 모델을로드 할 때 메모리가 부족합니다. debug는 dalvik이 에뮬레이터 또는 장치에서 50M 메모리 제한을 가지고 있음을 보여줍니다. 왜 이런지 모르겠다.android dalvik memory limit? 메모리 부족 예외
mIndicesInt = ByteBuffer.allocateDirect(indices.length * INT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asIntBuffer();
mIndicesInt.put(indices).position(0);
심지어 AVD RAM을 2048M으로 늘리고 1,024M까지 힙을 썼는데 도움이되지 않습니다. 항상 같은 번호로 중지 :
D/setIndices (2270) : 메모리 PSS에 = 67.88 MB, 개인 = 66.09 MB, 공유 = 13.30 MB D/setIndices (2270) : MAXMEM = 50331648 D를/setIndices (2270)는 totalMem = 50,208,736 D/setIndices (2,270) = freeMem OBJ 모델은 20 개 이상의 객체가 포함 1,963,736
. 여러 개체를 제거한 후 메모리 부족 문제가 사라지므로이 프로세스 당 메모리 하드 제한 문제가 있습니까?
처리에 대한 제안이 있으십니까? 또한 RAM 및 힙 크기를 늘리는 AVD 옵션은 효과가 없습니다. 이유가 무엇입니까?
http://stackoverflow.com/questions/3078301/dalvik-memory-allocation-how-to-change-the-default-limits와 유사하게 보입니다. 실제로 중복 된 것은 아닙니다. 거기에서 좋은 정보를 얻을 수도 있습니다. 한 가지는 메모리 제한이 "하드 코딩 된"것으로 보이며 전화기를 응원하지 않으면 변경할 수 없습니다. –
그것을 지적 해 주셔서 감사합니다. 나는 메모리 부족으로 검색을했지만 그 스레드를 때리지 않았다. –
JNI/네이티브 코드로 할당을 시도하고 자바 코드에 대한 참조를 보냈습니까? 내가 아는 한, 원시 힙은 매우 커질 수 있습니다. 또 다른 옵션은 파일을 메모리 맵핑하는 것입니다. https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/lcnwzszrESo, MMapp IO link : http : //developer.android.com/reference/java/nio/channels/FileChannel.html 구체적으로 map (...) 메소드를 살펴 보겠습니다. 파일을 열 때 (예 : fileInputStream) 메소드 .getChannel()을 사용하여 .map (...)에 필요한 FileChannel에 대한 참조를 가져옵니다. – paulczak