사용 가능한 메모리는 사용량에 따라 감소하며 응용 프로그램을 닫거나 다시 시작해도 복원할 수 없습니다. X

사용 가능한 메모리는 사용량에 따라 감소하며 응용 프로그램을 닫거나 다시 시작해도 복원할 수 없습니다. X

커널은 캐싱을 위해 메모리를 사용하지만 요청 시 사용자 애플리케이션에 메모리를 사용할 수 있다는 것을 알고 있습니다. 메모리가 "누락"되었다고 주장할 때 출력에서 ​​"사용 가능한" 메모리를 언급하며 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에서 얼마나 많은 공간이 사용되고 있는지 확인하십시오. 이는 응용 프로그램 메모리와 총 시스템 메모리 간의 차이를 설명할 수 있습니다 .

관련 정보