자원 누수
From Wikipedia, the free encyclopedia
자원 누수(resource leak)는 프로그램에 의한 자원소비의 한 종류로서 이 프로그램이 자신이 획득했던 자원들을 놓지 않을 때 일어난다. 이 조건은 보통 프로그램 내의 버그에 의해 나타난다. 전형적인 자원 누수로는 메모리 누수와 핸들 누수 등이 있으며, 참고로 메모리는 종종 다른 자원들과 독립적으로 고려된다. [1]
운영체제에서 제한적으로 사용 가능한 자원으로는 인터넷 소켓, 파일 핸들, 프로세스 테이블 엔트리 그리고 프로세스 식별자(PID)가 있다. 자원 누수는 종종 사소한 문제로써 사소한 늦어짐만 유발하고 프로세스가 종료된 후에 회복된다. 어떤 경우에는 자원 누수가 중요한 문제가 될 수 있는데 이 경우는 자원 고갈과 심각한 시스템 둔화 또는 불안정이 유발되고 자신을 포함한 여러 프로세스들이 충돌될 수 있다.[2] 자원 누수는 종종 경량이나 짧은 런타임 시에는 알아채지 못하다가, 무거운 시스템 로드 또는 오랜 기간 실행 시에 발생할 수 있다.[3]
자워 누수는 특히 매우 낮은 양의 자원이 사용 가능할 때 문제가 된다. Lock 같은 유니크한 자원이 누수되는 경우 즉각적인 자원 고갈이 발생하고 이것은 교착 상태까지 유발한다. 의도적인 자원 누수는 서비스 거부 공격에 사용될 수 있다.