저는 Linux에 대해 구체적으로 질문하고 있지만 일반적으로 Unix(예: POSIX 또는 유사)에 적용되는 답변이 훨씬 더 좋을 것입니다.
Linux는 파일 시스템 메타데이터(및 기타 항목)를 캐싱하기 위해 여유 메모리(즉, 프로세스에 아직 할당되지 않은 메모리)를 사용합니다. 프로세스가 추가 메모리를 요청하면 이러한 캐시는 공간을 확보하기 위해 축소됩니다.
내 질문: 애플리케이션이 캐시로만 사용되는 메모리를 할당할 수 있는 방법이 있습니까? 즉, 사용 가능한 메모리가 부족하고 다른 프로세스의 메모리 할당이 제공되지 않을 때 커널이 어떤 방식으로든 이 메모리 영역의 제어권을 확보할 수 있다는 것을 알고 할당이 이루어집니다.
답변1
아마도 다음을 사용할 수 있습니다.madvise(2)
이를 MADV_FREE
위해 페이지를 회수 가능한 것으로 표시하지만 반드시 즉시 삭제할 필요는 없으며 데이터를 다시 읽을 수 있습니다. (페이지당) 모든 0을 다시 얻으면 페이지가 사라진 것을 알 수 있습니다.