OS X의 일상적인 사용 (인터넷을 통한 다양한 게시물에 따라 여러 가지 다른 현상)에서 흔히 발생하는 현상 인 "사용 가능한"메모리가 더 이상 없을 때마다 시스템이 느려지는 것처럼 보입니다. 디스크 활동이 많고 vm_stat가 많은 페이지 아웃을보고하기 때문에 이는 스와핑 때문일 수 있습니다. (잘못 나를 교정)
그러나 "비활성"램의 양은 일반적으로 스왑 시작 / 발생 / 종료시 사용 가능한 모든 메모리 (^ 1.)의 약 12.5 % -25 %입니다.
에 따르면 http://support.apple.com/kb/ht1342 :
비활성 메모리
메모리의이 정보는 현재 사용되고 있지 않지만 최근에 사용되었습니다.
예를 들어, Mail을 사용한 후 종료 한 경우 Mail에서 사용중인 RAM이 비활성 메모리로 표시됩니다. 이 비활성 메모리는 사용 가능한 메모리와 마찬가지로 다른 응용 프로그램에서 사용할 수 있습니다. 그러나 다른 응용 프로그램에서 비활성 메모리를 사용하기 전에 Mail을 열면 느린 하드 디스크에서 Mail을로드하는 대신 비활성 메모리가 활성 메모리로 변환되므로 Mail이 더 빨리 열립니다.
비활성 목록에는 현재 실제 메모리에 상주하지만 최근에 액세스하지 않은 페이지가 포함됩니다. 이 페이지에는 유효한 데이터가 포함되어 있지만 언제든지 메모리에서 해제 될 수 있습니다 .
따라서 기본적으로 : 프로그램이 종료되면 메모리가 비활성으로 표시되어 언제든지 소유권을 주장 할 수 있습니다. 여전히, OS X은 "Free"메모리가 부족할 때마다이 메모리를 요구하는 대신 스왑 파일로 메모리 스왑 아웃을 시작하는 것을 선호합니다.
왜? 예를 들어, 비활성 메모리를 즉시 해제하고 스왑 파일을 건드리지 않는 것보다이 동작의 장점은 무엇입니까? 일부 소스 (^ 2.)는 OS X가 "비활성"메모리를 해제하기 전에 스왑하기 위해 페이징 아웃한다고 표시하지만, 메모리 가 언제라도 메모리에서 해제 될 수있는 경우에는 의미가 없습니다 . 스와핑은 비싸고, 출시는 싸다. 맞지?
선호도 또는 알려진 핵을 사용하여이 동작을 변경할 수 있습니까? (바람직하게 swap / dynamic_pager를 비활성화하고 다시 시작하는 것을 포함하지 않는 것이 바람직합니다 ...)
퍼지 명령과 일부 사용 가능한 메모리를 강제로 복구하는 디스크 권한 복구의 개념에 감사 하지만, 실제로 스왑 / 릴리스 결정 논리를 수정하는 것보다 더 많은 여유 메모리를 강제로 강제하는 방법입니다.
Btw 비슷한 질문이 여기에 요청되었습니다 : http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/ 그리고 여기 : http : //hintsforums.macworld .com / showthread.php? t = 87688 이지만 OP가 핵심 질문을 다시 한 번도 대답하지 않는 답변은 없습니다 ...
^ 1. 업데이트 17-mar-2012 이 질문을 처음 게시 한 이후 4GB에서 8GB의 설치된 램으로 이동했지만 문제가 남아 있습니다. "비활성"램의 양은 이전에 0.5gb-1.0gb였으며 스와핑이 시작 / 발생 / 종료 될 때 일반적으로 약 1.0-2.0GB입니다. 즉, 램의 약 12.5 % -25 %가 osx에 의해 비활성으로 유지되는 것으로 보입니다 커널 로직.
모든 메모리가 사용되면 (여유 메모리가 0 임) OS는 비활성 메모리를 스왑 파일에 기록하여 활성 메모리에 더 많은 공간을 만듭니다.
2012 년 3 월 17 일 업데이트
다음은 지금까지 제안 된 방법을 요약 한 것입니다.
퍼지 명령
"성능 분석을 위해 콜드 디스크 버퍼 캐시로 초기 부팅 조건을 추정하는 데 사용됩니다. malloc, vm_allocate 등을 통해 할당 된 익명 메모리에는 영향을 미치지 않습니다."
이는 osx가 디스크 캐시를 스왑 아웃하는 것을 방지하는 데 유용하지만 (OSX가 실제로 처음에 그렇게하는 것은 우스운 일이지만) 디스크 캐시가 해제된다는 단점이 있습니다. 스왑 아웃을하면 콜드 디스크 버퍼 캐시가 생겨 성능에 부정적인 영향을 줄 수 있습니다.
freeMemory에서 응용 프로그램 및 / 또는 디스크 권한을 복구하는 것은 약간의 여유 메모리를 강제로
메모리를 해제 하는 데 도움이되지 않고 기가 바이트의 메모리 내용 만 램에서 HD로 이동합니다. 결국, 많은 vm이 이제 스왑 상태이므로 메모리를 해제하는 동안 열려있는 응용 프로그램을 사용하려고하면 스왑 인이 많이 발생합니다.
사용 스왑 할당 속도 향상 dynamicpagerwrapper을
스왑 사용 속도를 높이기 위해해야 할 일이 좋은 것처럼 보이지만 여전히 메모리가 비활성 상태 인 동안 OSX 스와핑 문제를 해결하지는 못합니다.
dynamicpager 를 비활성화 하고 다시 시작 하여 스왑 비활성화
이것은 모든 메모리가 사용될 때 osx가 시스템 정지 가격으로 스왑을 사용하지 않도록합니다. 실행 가능한 대안이 아닙니다 ...
해킹 된 dynamicpager를 사용하여 스왑 비활성화
위의 dynamicpager를 비활성화하는 것과 유사하게, 의견에서 블로그 게시물에 대한 일부 발췌문은 이것이 "유효하지 않은 메모리가 평소와 같이 높다"는 해결책이 아니라는 것을 나타냅니다. "시스템에 메모리가 부족하면 전체 OS가 정지됩니다 ...", "Mac의 전체 메모리를 사용하면 시스템이 정지 될 수 있습니다"
요약하자면, 여전히 "비활성"메모리가있을 때 Mac OS X이 스왑을 사용하지 못하게하는 방법을 알지 못합니다. 그것이 가능하지 않다면, 아마도 osx 가 언제라도 메모리에서 해제 될 수있는 메모리를 스왑 아웃하는 것을 선호하는 이유에 대한 설명이 있습니까?