Contents
see List작성일 2014. 09. 30.
점점 프로그래밍 교육이 단일화 되고 실무화되면서
많은 개발자들이 기본에 충실하지 않고 고급 기술로 넘어가는 경향이 많다.
그중에 하나가 메모리관리에 대한 측면이다.
메모리에 대한 기초지식이 없이 고급기술을 배우게 되면 오히려 독이 될수있다.
큰예로 String 과 StringBuffer 에 대한 상식이다..
일반적으로 String으로 인한 변수 선언은 같은 문자일이 경우 최초에만 변수를 생성하고
일반 리터럴 처럼 이후의 문자열은 기존 인스턴트를 참조한다 .
물론 new String 으로 인스턴스를 생성하면 이야기는 달라지지만 말이다.
그리고 문자열을 더할때마다 즉 String tmp1 = "aa";
String tmp2 = "bb";
String tmp3 = tmp1 + tmp2;
이런식으로 더할 때 마다 인스턴스를 생성하게 된다.
물론 자바의 버전이 올라가면서 String 의 연산도 일정한 알고리즘에 의하여 StringBuilder
를 통해 연산되어 문제가 많이 사라졌지만..
그래도 많은 메모리를 차지하게되어 반복문이나 호출이 빈번한 곳에서의 문자열의
연산은 StringBuffer 를 통한 append 방식으로 하여 단일 인스턴스로 관리한다..
이 사실은 인지하는 사람들이 저지르는 실수가있다.
바로 같은 패턴의 문자열의 연산 또한 StringBuffer 를 통해 한다는것이다.
반복문안에서의 StringBuffer 의 생성은 String과 별반 다를것이 없다 .
아니 오히려 String 같은 패턴의 문자열일 경우 이미 생성된 인스턴스를 참조하기 때문에
계속 인스턴스를 생성하는 StringBuffer 에 비해 월등히 빠르다. (stopwatch를 통해 직접 실험했다).
꼭 반복문이라도 한번 참조한 적이 있는 문자열은
적지 않은 연산이 일어나더라도 StringBuffer 보다는 일반 String 사용하는것이
정신건강에도 성능에도 좋다.
java
| No | 작성일 | Title |
|---|---|---|
| 3356 | 2026. 08. 14. | Java record와 sealed interface로 안전한 API 응답 모델 만들기 |
| 3324 | 2026. 08. 05. | Java 가상 스레드 실전 적용 가이드: I/O 중심 API의 동시성 구조 바꾸기 |
| 3292 | 2026. 07. 28. | Java 메모리 사용량이 계속 늘어날 때: Heap Dump와 JFR로 누수 원인 찾기 |
| 3261 | 2026. 07. 20. | Java record로 API DTO를 단순하게 만드는 방법: 검증·변환·직렬화 실전 적용 |
| 3235 | 2026. 07. 12. | Java API 동시 호출 폭주 대응: Thread Pool, timeout, 장애 격리로 안정성 올리기 |
| 3178 | 2026. 07. 03. | Java 메모리 누수 진단 가이드: jcmd와 JFR로 원인 좁히기 |
| 3130 | 2026. 06. 25. | Java 가상 스레드 적용 전 점검: 블로킹 I/O와 동시성 제한 운영 가이드 |
| 3074 | 2026. 06. 17. | Java 스레드 작업 취소 설계: interrupt, Future, ExecutorService 종료를 제대로 연결하기 |
| 2985 | 2026. 06. 09. | Java 컨테이너 메모리 운영 가이드: 힙, 직접 메모리, GC 로그를 함께 점검하기 |
| 2928 | 2026. 06. 01. | Java Virtual Threads 운영 전환 가이드: 블로킹 API, 커넥션 풀, 관측 지표 점검법 |