먼저 constant pool과 string pool에 관한 것을 chat gpt에게 물어봤다



Q : 자바에서 constant pool과 string pool은 다른거야?

A : 다르다. string pool은 constant pool의 한 부분이다 하면서 쏼라쏼라~



추가 질문

Q : constant pool은 jvm의 어느 메모리 영역에 저장돼?

A : method area에 저장된다(non-heap memory)



Q : 그러면 string pool도 method area에 저장되겠네 그치?

A : 맞다 string pool도 method area에 constant pool과 같이 저장된다



과연 그럴까..?

구글링해서 검색해보니까 Java에서 원래는 method area에 저장됐었는데 java 7부터는 heap 메모리에 저장되는 걸로 바꼈다고 한다 (string pool)

다시 chat gpt 에게 물어보자


Q : 자바 7부터는 string pool이 heap memory영역에 저장되는 거 아냐?

A : 잘못된 답변을 드려 죄송합니다. 자바7부터는 heap 영역에 저장됩니다 블라블라~



? 이새끼 그래도 사과는 잘하네



결론

string pool은 원래는 method area의 permanent generation에 저장됐는데 java 7 버전부터는 heap으로 옮겼다

예전 버전의 자바는 permanent generation의 크기가 고정돼있어서 heap으로 옮겼다고 한다

constant pool은 여전히 method area에 저장되는거고


그리고 chat gpt는 어떻게 질문하느냐에 따라 답변이 많이 달라지고 좀 불안정하다는 느낌을 많이 받음