반응형

IT/Java 13

성능 저하 및 Full GC - e.printStackTrace()를 피해야 하는 이유

자바 개발 시, 예외 처리는 필수적이다. 그러나 많은 개발자들이 예외 처리를 위해 e.printStackTrace()를 사용하는 경향이 있다. 이 방식은 단순하고 직관적이지만, 성능 저하를 초래하고, 특히 가비지 컬렉션(GC)의 빈도와 깊은 관련이 있다. e.printStackTrace()의 문제점 예외 데이터의 과도한 생성 e.printStackTrace()는 예외와 스택 추적 정보를 출력하기 위해 내부적으로 문자열 객체를 생성한다. 과도한 예외 발생 상황에서 이러한 문자열 객체들이 대량으로 생성될 수 있으며, 이는 메모리 사용량을 증가시킨다. 로깅 관리의 어려움 e.printStackTrace()는 예외 정보를 표준 에러 스트림에 직접 출력하기 때문에, 이 정보를 파일이나 데이터베이스로 리디렉션하는 ..

IT/Java 2024.02.28

Try-With-Resources 개념, 자원 자동해제 처리, AutoCloseable 알아보기

파일이나 네트워크 연결 같은 시스템 자원을 사용할 때, 이러한 자원들은 사용 후 반드시 적절하게 닫아주어야 한다. 그렇지 않으면 리소스 누수가 발생하여 시스템 성능 저하 또는 다른 문제를 일으킬 수 있다. 이 문제를 해결하기 위해 자바 7에서는 'Try-With-Resources' 구문이 도입되었다. Try-With-Resources란? Try-With-Resources는 자바 7부터 도입된 구문으로, try문을 사용하여 자원을 자동으로 관리할 수 있게 해준다. 이 구문은 AutoCloseable 인터페이스를 구현한 모든 객체에 대해 작동하며, 이러한 객체들은 try문이 종료될 때 자동으로 close() 메서드가 호출되어 자원이 안전하게 닫히게 된다. Try-With-Resources 사용 예제 try ..

IT/Java 2024.02.28

스프링 부트: 윈도우와 맥에서 한글 파일명 다운로드 문제 해결하기(2)

문제 상황은 이렇습니다. 파일 업로드 기능을 구현했을 때, MacOS에서는 한글 파일명이 정상적으로 데이터베이스에 저장되었지만, Windows에서는 한글 파일명이 자음과 모음이 분리되어 저장되는 현상이 발생했습니다. 이는 운영 체제 간 문자 인코딩 처리 방식의 차이 때문에 발생하는 일반적인 문제였습니다. 처음 시도한 해결책은 다음과 같은 방식이었습니다: try { // 파일 데이터 조회 ResponseFile list = fileService.getFile(attachId, fileId); ... // 파일명 UTF-8 인코딩 후, ISO-8859-1로 재인코딩 String encodedFileName = new String(list.getOriginalName().getBytes(StandardChar..

IT/Java 2024.01.25
반응형