2013-11-01 1 views

답변

1

Android에서는 실제로 메모리에 액세스하지 않는 한 메모리가 커밋되지 않는다는 의미에서 모든 메모리 할당은 "가상"입니다. 내가 정확하게 기억하면, VirtualAlloc은 프로세스 당 메모리가 인위적으로 32 MByte로 제한된 Windows CE에서옵니다 (http://denniskrabbe.wordpress.com/2009/10/09/windows-mobile-heaps-from-the-large-memory-area/ 참조). 안드로이드에서는 32 비트 아키텍처 중 자연스러운 한계가 있습니다 (iOS가 최근에 64 비트 시대에 접어 들었습니다). JVM 힙 크기에는 몇 가지 제한이 있지만 기본 (NDK) 메모리에는 적용되지 않습니다.

Android에서 malloc은 모든 Linux와 마찬가지로 낙관적입니다. 즉, 메모리가 성공적으로 처리 된 후 Does malloc lazily create the backing pages for an allocation on Linux (and other platforms)?을 참조하십시오. 반면, 생체 공학은 glibc로 custom memory allocation hooks을 제공하지 않습니다.

+0

메모리를 처리하기 위해 malloc/new를 사용해야한다는 것을 의미합니까? VirtualAlloc에서 내가 명시 적으로 예약하거나 커밋을 요청할 수 있습니다. 어떻게 이것을 Android 기본에서 할 수 있습니까? – JaimeBarrachina

+1

무엇을하려고합니까? (나는 약간의 느낌이 든다. http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem here.) – fadden

+1

아니요, 안드로이드에서 (바이오닉도 리눅스 커널도 마찬가지입니다) 명시 적으로 예약하거나 커밋을 요청하지 않습니다. –