커널은 캐싱을 위해 메모리를 사용하지만 요청 시 사용자 애플리케이션에 메모리를 사용할 수 있다는 것을 알고 있습니다. 메모리가 "누락"되었다고 주장할 때 출력에서 "사용 가능한" 메모리를 언급하며 free
이를 고려합니다.
시작된 프로세스를 모두 종료하면 사용 가능한 메모리로 어느 정도 돌아가야 할 것 같습니다. 그러나 그것은 사실이 아닌 것 같습니다.
free -k
다음은 미니멀리스트 WM과 몇 가지 쉘 등을 사용하여 X에 로그인한 직후의 출력입니다 .
다시 시작한 후:
total used free shared buff/cache available
Mem: 8144232 373664 6945832 1644 824736 7514692
available
크기는 7.5MiB이며 모든 것이 정상입니다.
몇 주 동안 컴퓨터를 사용한 후 메모리가 available
크게 줄어들었고, 시작된 모든 응용 프로그램을 모두 종료했지만 메모리는 여전히 시작 시보다 낮았습니다. 찾을 수 있는 모든 애플리케이션을 종료하면 최대 약 5GiB의 "사용 가능한" 공간을 확보할 수 있습니다.
그런 다음 디스플레이 관리자를 다시 시작하고 다시 로그인하면 다음과 같은 결과가 나타납니다.
total used free shared buff/cache available
Mem: 8144344 577280 5547936 982600 2019128 6279136
Swap: 0 0 0
이렇게 하면 단순히 앱을 종료하는 것보다 더 많은 메모리가 확보되지만 모든 것을 다시 열어야 합니다. 또한 새로 출시된 7.5GiB 근처에도 도달하지 못합니다. 나는 공유 메모리 사용량이 이것의 대부분을 차지한다는 것을 알았지만 모든 사용자 프로세스를 종료했기 때문에 이것이 왜 그렇게 높은지 이해할 수 없습니다.
이 동작의 원인이 무엇인지, 컴퓨터를 재부팅하거나 X를 다시 시작할 필요가 없는 해결 방법이 있는지 알고 싶습니다.
답변1
free는 "shared"에 대해 높은 값을 표시하고 교환이 비활성화됩니다. /tmp가 tmpfs로 마운트되면 그 안에 있는 모든 파일은 실제로 공유 메모리에 저장되며 스와핑 없이 시스템은 해당 파일을 스와핑하여 여유 메모리를 확보할 수 없습니다.
df
/tmp에서 얼마나 많은 공간이 사용되고 있는지 확인하십시오. 이는 응용 프로그램 메모리와 총 시스템 메모리 간의 차이를 설명할 수 있습니다 .