[Java] Files.list()

zilzu·2023년 5월 1일
0

java

목록 보기
1/1

회사에서 얼마전 배치서버가 자꾸 뻗어서 장애가 난 적이 있다.
로그를 보아하니 같은 파일 리스트를 계속 반복적으로 가져오고 있었고, 거기서 resource를 다 잡아먹어버려서 서버가 자꾸 뻗는 거였다.

파일 가져오는 코드를 보아하니..

        List<Path> txts = Files.list(path)
                .filter(~~~~~~)
                .collect(Collectors.toList());

요렇게 생긴 코드였는데
문제가 됐던 Files.list()..

자원해제가 필요한 메서드입니다.. ! 라고 잘 설명해주고 있다.

        try(Stream<Path> list = Files.list(path)) {
            List<Path> txts = list
                    .filter(~~~~~)
                    .collect(Collectors.toList());
        }

Stream 인터페이스는 AutoCloseable 인터페이스를 상속받으므로 try-with-resource 구문을 사용해 자원 자동반납이 가능하므로

그래서 이처럼 try-with-resource 구문을 사용해 파일 스트림을 자동 닫아주게 하였다.

이걸 적용하고 나니 정상 작동하는 것을 확인했다.


이번에 새로 오픈 하면서 이것저것 여러 이슈들이 많았는데,
전에는 resource가 Full이 나면 서버를 재부팅 시켰다고 한다. ㅋㅋ;

들리는 후문에 의하면 하루에 한번 계속 재부팅 시켰다고..
나는 이런짓거리 안할거다.

아는게 많아야 힘들지 않다.
똑똑하게 일해야 한다.

profile
나는 달린다. 오늘도, 한라에서 백두까지!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN