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 |
|---|---|---|
| 2874 | 2026. 05. 24. | Java 서비스 ThreadPoolExecutor 포화 방지: 큐 크기, 거절 정책, 백프레셔 실전 가이드 |
| 2799 | 2026. 05. 16. | Java 운영 장애 분석을 위한 JFR·jcmd 실전 가이드: 재시작 없이 CPU·메모리 증거 남기기 |
| 2603 | 2026. 04. 24. | Java 26 Pattern Matching 실전 가이드: Records · Sealed Classes · Primitive Patterns로 분기 없는 도메인 모델링 |
| 2518 | 2026. 04. 16. | Java 26 Virtual Threads & Structured Concurrency 실전 가이드: 가상 스레드로 고성능 서버 구축하기 |
| 2491 | 2026. 04. 14. | Java 21/25 Virtual Threads 완벽 가이드: 기존 스레드 모델과의 차이, 실전 활용법 |
| 2470 | 2026. 04. 13. | Java 25 Virtual Threads & Structured Concurrency 완벽 가이드 |
| 2450 | 2026. 04. 12. | Java 21 Virtual Threads 완벽 가이드: Project Loom으로 수백만 스레드 다루기 |
| 2426 | 2026. 04. 11. | Java 24 Primitive Type Pattern Matching 완벽 가이드 - switch와 instanceof 확장 |
| 2390 | 2026. 04. 09. | Java 26 신기능 완벽 가이드 - AOT 캐시, Compact Headers, 패턴 매칭 실전 활용 |
| 2369 | 2026. 04. 08. | Java 21/25 완벽 가이드: Virtual Threads, Record Patterns, Structured Concurrency 실전 적용 |