자바 메모리 구조
메서드 영역에는 클래스, 메서드 등의 실행 코드와 static 영역이 들어가 있다. 추가로 공통 리터럴 상수를 보관하는 상수 풀(constant pool)이라는 것도 있는데 나는 인프런 - 김영한님의 자바 기본 강의에서 메서드 영역에 포함되어 있는 걸로 배웠으나 다른 블로그들을 보면 힙 영역에 포함된 것이라고 한다. 의견이 분분하길래 chatGPT에게 물어봤더니 자바 버전에 따라 위치하는 영역이 달라진 것이라고 했다. 즉, 자바 7이전(PermGen)에는 메서드 영역에 있었는데, 자바 8 이후(MetaSpace)로는 힙 영역으로 옮겨졌다는 것이다. 이 변화가 메모리의 한계를 개선시켜줬다고 하는데 나처럼 메서드 영역에 있냐, 힙 영역에 있냐를 구분시키는 질문은 별로 좋지 않은 질문이라고 한다^^! 이러한 메모리 위치는 JVM 내부 구현의 일부이고 우리가 짜는 애플리케이션 코드에는 직접적으로 영향을 주지 않을뿐더러 메모리에 직접 접근해 조작할 수는 없기 때문이랬다. 그러니 너무 신경쓰지 않아도 된다.
C언어 메모리 구조
'JAVA' 카테고리의 다른 글
[JAVA] 직렬화, 역직렬화 개념 (1) | 2024.10.02 |
---|---|
[JAVA] 큐(Queue), 덱(Deque) 구현체, 메서드 정리 (0) | 2024.09.30 |
[JAVA] comparable, comparator 비교 (0) | 2024.07.03 |
[JAVA] System.in.read() (1) | 2024.06.30 |
[JAVA] delete(), deleteCharAt() (0) | 2024.05.07 |