나는 메모리를 이러한 구조로 이해하고 있었으나.... 이건 일반적인경우고 자바의경우는다르다
JVM의 구조가 다른것을 오늘에서야... 알았다...
5가지로 나눌수 있다
자세한 내용은 추가적인 검색을 추천드리고... (죄송합니다)
내가 말하고싶은거는
static은 어디에 저장되냐는 것이다
답부터 부터 말하면
method 영역이다
method영역에 static영역이 포함되고
static이 붙은 것들은 static영역에 저장된다
5가지 영역중 3가지만 간략하게 말하면
method영역
프로그램이 시작전에 로드되고 프로그램이 종료 시에 소멸된다 - 전역변수처럼 사용가능
stack 영역
메소드 호출과 관련된!
지연변수, 매개변수 등이 스택영역에 저장되었다가 메소드가 끝이나면 소멸된다
Heap 영영
클래스의 객체(인스턴스), new 연산자에 의해 동적으로 생성된다
*********
String 상수는 Heap 영역에 저장된다 (heap 영역의 String constant pool 영역)
OOM 방지를 위해 String pool이 heap에 있음
String a = "Car"; // a는 변수 Car는 상수
'language > 자바' 카테고리의 다른 글
[java]try-with-resources (feat. autocloseable) (0) | 2022.11.09 |
---|---|
[java] Unreachable code 에러 (feat. dead code) (0) | 2022.11.03 |
[java] + 연산 순서 (0) | 2022.07.25 |
[java] local variables , instance variables, class variables (지역변수, 인스턴스변수, 클래스변수) (0) | 2022.07.20 |
[java] default method 디폴트 메소드 (feat. abstract class) (0) | 2022.07.18 |