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 |
|---|---|---|
| 2351 | 2026. 04. 07. | Java 23 Gatherers API 실전 가이드 - Stream 중간 연산을 직접 정의하는 방법 |
| 2337 | 2026. 04. 06. | Java 24 Structured Concurrency 실전 가이드 - StructuredTaskScope로 안전한 동시성 구현 |
| 2322 | 2026. 04. 05. | Java 24 Compact Object Headers로 힙 메모리 25% 절약하기 |
| 2298 | 2026. 04. 05. | Java 24 Stream Gatherers 실전 활용법: 커스텀 중간 연산 만들기 |
| 2297 | 2026. 04. 05. | Java 25 Structured Concurrency 실전 가이드: StructuredTaskScope 완전 정복 |
| 2270 | 2026. 04. 04. | Java 21-23 패턴 매칭과 Record Patterns: switch문의 혁명적 진화 |
| 2269 | 2026. 04. 04. | Java 21 Virtual Threads 완벽 가이드: 기존 스레드 대비 100배 성능 향상 달성하기 |
| 2201 | 2026. 02. 11. | 모던 Java 빌드 도구 비교: Gradle vs Maven 2025 |
| 2200 | 2026. 02. 11. | Java Stream API 고급 패턴과 성능 최적화 |
| 2199 | 2026. 02. 11. | JVM 메모리 튜닝과 GC 최적화 완벽 가이드 |