자원 누수
프로그래밍할 때 파일을 닫지 않으면 자원 누수가 발생한다. 간단한 테스트만으로는 그런 문제가 있는지조차 모르고 넘어가기 쉽다. 오랫동안 시스템을 운영해야 그 모습을 드러낸다.
다행히 어떤 파일을 닫지 않았는지만 확인할 수 있다면, 대부분은 개발자의 부주의나 실수이기 때문에 쉽게 고칠 수 있다. 리눅스와 윈도우에서 열린 파일을 확인하는 방법을 간단하게 정리했다.
리눅스에서 파일 디스크립터 확인
리눅스에서 어떤 파일이 열려 있는지는 파일 디스크립터(File Descriptor)로 확인한다.
파일을 연 프로세스 아이디를 확인한다.
ps -ef | grep <키워드>
예를 들어 다음과 같이 프로세스 아이디를 확인할 수 있다.
파일 디스크립터 디렉터리로 이동한다.
cd /proc/<pid>/fd
ls
명령어로 파일 디스크립터를 확인한다.
ls -al
grep
으로 필터할 수 있다.
ls -al | grep .jar
윈도우에서 파일 핸들 확인
윈도우에서 어떤 파일이 열려 있는지는 파일 핸들(File Handle)로 확인한다.
Windows Sysinternals
유틸리티 설치
다음에서 Windows Sysinternals 유틸리티를 내려받아 설치한다. 압축(ZIP)을 풀면 된다. 여기서는 C:\Program Files\SysinternalsSuite
폴더에 설치한 것으로 간주한다.
명령 프롬프트를 열고
C:\Program Files\SysinternalsSuite
폴더로 이동한다.다음 명령어를 실행한다.
C:\Program Files\SysinternalsSuite>handle.exe | findstr /i C:\Users\dimdol
마지막 변수로 상세 폴더를 지정해서 확인 범위를 좁힐 수 있다.