다음과 같이 많은 메모리를 사용하는 코드를 실행할 때:
a = "1"
while True:a+=a
Windows 10에서는 memory error
컴퓨터를 안전하게 유지하지만 Linux에서 이 코드를 실행하면 작동이 중지되고 메모리가 부족해집니다. 왜 나한테는 안 와 memory error
?
답변1
Linux 커널 OOM 처리 기능은 매우 열악하며 Linux 커널 개발자는 이 문제를 사용자 공간에서 해결해야 함을 분명히 했습니다.https://lkml.org/lkml/2019/8/4/15
사용자 공간은 다음을 자유롭게 사용할 수 있습니다.
cgroups
limits.conf
earlyoom
및nohang
유사한 애플리케이션:https://github.com/hakavlad/nohang
이제 Fedora와 같은 배포판에는 earlyoom
기본적으로 포함됩니다.
2022년 10월 업데이트됨:
새로운 충분히 배포판을 사용하는 경우 systemd-oomd
지금 활성화해야 합니다. 설치하지 않은 경우 earlyoom
수동으로 설치할 수 있습니다(대부분의 배포판 저장소 또는 컴파일에서 사용 가능해야 함).