Java는 C언어처럼 포인터가 없어 메모리의 주소와 해당 값을 함께 볼 수 없는 단점이 너무 너무 너무~ 크다 !
Java 문서나 많은 글을 읽어도 메모리의 구조가 어떻게 어떤 흐름으로 돌아가는 지 내가 알고 있는 이 답이 확실한가에 대한 의문도 많이 든다.
StringBuffer의 append 메소드를 사용할 때, 어떤 식으로 값이 메모리에 할당되고 흘러가는 지 내가 이해한 바를 정리하고자 한다.
StringBuffer sb = nes StringBuffer();
sb.append("a");
sb.append("b");
단순 참조를 위한 문자열은 String 클래스, 연산이 많은 경우는 가변적으로 문자열을 저장하고 관리하는 StringBuffer 클래스를 사용한다.
String 과 StringBuffer의 차이점이 궁금하다면?
Link : https://haenny.tistory.com/17
위 코드와 같은 경우, 다음과 같은 구조를 보인다.
그렇다면, 이런 경우에는 메모리에 데이터가 어떻게 쌓일까? 궁금증이 들었다.
StringBuffer sb = nes StringBuffer();
sb.append("a"+"b");
물론, String 클래스 문자열 연산의 단점을 보완하고자 StringBuffer 클래스를 사용하는 것이니 굳이 StringBuffer에 String 연산은 안하길 바란다.
본론으로 돌아가서 위 코드의 경우 메모리 구조가 어떻게 될까?
다음과 같은 구조를 보이지 않을까 생각한다.
여기서 sb가 가리키는 주소의 데이터가 단순히 "ab" 데이터가 아닌, string pool에 할당된 "ab"데이터의 주소값을 갖고있을 것이다.
'JVM > Java' 카테고리의 다른 글
[Error] Springboot Gradle Task :compile.Java Error (자바 경로를 찾지 못하는 현상) (2) | 2019.11.04 |
---|---|
[Error] DB Connection 종료 에러 해결: No operations allowed after statement closed (2) | 2019.10.24 |
[Java] String, StringBuffer, StringBuilder의 차이점 스윽 (0) | 2019.07.30 |
[Java] String과 new String 차이 (0) | 2019.07.30 |
[Java] JAXB 활용한 Java 객체의 XML 변환 방법 (0) | 2019.07.09 |
댓글