세 가지 영역으로 구성 :



메소드 영역



힙 영역

- 객체는 힙영역에서



JVM 영역

- 메소드를 추가할 때마다 프레임이 추가(PUSH)

- 메소드를 종료하면 프레임이 제거(POP)



---

문자열 리터널은 내부적으로 new String()을 호출해 생성한 객체

스택영역에서 생성된 변수 i에 힙영역에서 생생된 string을 참조

새로운 변수 k에 변수 i가 참조한 문자열 string을 할당한다면 더 이상 새로운 String 객체를 생성하지 않고 기존 리터럴을 공유