나는 과학적 작업을 위해 Ubuntu 14.04에서 Eclipse를 사용하고 있으며 내 코드는 많은 RAM을 소비합니다. Eclipse에서 코드를 실행하면 시스템 모니터에서 RAM 사용량이 거의 100%까지 올라가고 동시에 OS가 매우 응답하지 않는 것을 볼 수 있습니다(예를 들어 터미널을 여는 데 1분 이상 소요됨). OS가 항상 응답성을 유지하도록 Eclipse에서 사용되는 RAM의 양을 제한하는 방법이 있습니까?
감사해요!
답변1
Eclipse에서 애플리케이션을 실행하면 OS에 별도의 스레드가 생성됩니다. 해당 스레드의 RAM 사용량은 Eclipse로 제어할 수 없습니다.
시스템 충돌을 방지하는 한 가지 방법은 스왑 파티션 크기를 늘리는 것입니다. 이 경우에도 시스템은 매우 느려지지만 충돌은 발생하지 않습니다.
응용 프로그램의 RAM 사용량을 제어하는 다른 방법이 있습니다. 예를 들어 사용량이 특정 값을 초과하면 프로그램을 종료하는 것입니다. 메모리 사용량에 대해 이러한 엄격한 제한을 설정하면 예측할 수 없는 동작/충돌이 발생할 수 있습니다. RAM 사용량 제한에 대해 설명하는 아래 링크를 참조하세요.
https://unix.stackexchange.com/questions/44985/limit-memory-usage-for-a-single-linux-process
RAM을 덜 사용하도록 코드를 최적화하거나 RAM에 보관하는 대신 데이터를 하드 디스크에 덤프하고 필요할 때 읽는 방법을 생각해 보는 것이 좋습니다. RAM을 늘리는 것이 더 좋습니다!
답변2
여기바로 이 문제에 대한 Perl 스크립트입니다.
소개
타임아웃 스크립트는 Linux에서 블랙박스 프로세스의 시간과 메모리 소비를 제한하기 위한 리소스 모니터링 프로그램입니다. 명령줄에 지정한 명령을 실행하고 해당 명령의 메모리 및 시간 소비를 관찰하고, 제한을 벗어나면 프로세스를 중단하고 미리 설정된 메시지로 사용자에게 알립니다.
이 스크립트의 가장 큰 특징(그리고 실제로 이 스크립트가 나타난 이유)은 직접 생성된 프로세스를 감시할 뿐만 아니라 이후에 분기된 하위 항목도 추적한다는 것입니다. 감시되는 프로세스의 범위가 프로세스 그룹 또는 프로세스 트리에 의해 제한되는지 여부를 선택할 수 있습니다.