2014-09-19 6 views
0

iPad에서 사용 가능한 모든 메모리를 사용하는 응용 프로그램을 만들려고합니다. 제한된 메모리가있을 때 몇 가지 다른 것들을 테스트 할 수 있습니다.iPad에서 사용 가능한 메모리를 모두 사용하십시오.

현재 작동하는이 코드를 사용하고 있지만 Xcode는 내가이 지역을 할당 할 수 없다는 오류로 인해 멈추게됩니다. (나에게 대략 1.4/4 기가 바이트 중지합니다.)

while(1) 
{ 
    void *m = malloc(1024*1024); 
    memset(m,0,1024*1024); 
} 

내가 할 수있는 모든 메모리를 사용하고, 내가 그만 말할 때까지 메모리를 지키고 싶다. 이 문제를 해결할 더 좋은 방법이 있습니까?

답변

1

mmap을 MAP_LOCKED와 함께 사용하십시오.

+0

실제로 목표에 따라 다릅니다. 최소 두 개의 메모리 관리자가 있습니다. 첫 번째는 사용자 공간 관리자입니다. 그것은 OS로부터 메모리를 할당 한 다음 malloc/mmap 요청시 청크를 제공합니다. 두 번째 메모리 관리자는 커널 안에 있습니다. 모든 메모리 관리자는 할당 요청시 실패 할 수 있습니다. malloc이 더 많은 메모리를 할당 할 수없는 상황에서 응용 프로그램을 테스트하는 것이 목표라면 malloc/mmap과 MAP_LOCKED 사이에는 차이가 없습니다. 프로세스가 상주 메모리가 많을 때 OS가 작동하는 방식을 테스트하는 것이 목표라면 MAP_LOCKED와 함께 mmap을 사용해야합니다. – user1641854

+0

나는 이것뿐만 아니라 몇 가지를 시도해 보았고, iOS가 끝내기 전에 대략 1.6GB를 사용할 수있는 것으로 보인다. 이견있는 사람? 답변을 주셔서 감사합니다, 그것은 올바른 방향으로 나를 밀어! – user4059727

+0

그리고이 동작이 어떻게 잘못 생각합니까? 운영 체제 자체가 사용 가능한 메모리를 모두 제공하지는 않습니다. 왜냐하면 자체적으로 작동하기 위해 메모리가 필요하기 때문입니다. – user1641854

관련 문제