728x90
Person p1 = new Person();은 Person instance를 생성한다. 그런데 instance를 만들기전에 JVM이 하는 일이 있다. JVM은 Person 클래스가 CLASSPATH에 있는지 찾아보고, 클래스를 찾을 수 없으면 ClassNotFoundException을 발생시킨다.
여기서 PersonTest 클래스를 실행하게 되면, Person 클래스를 차게 되고, 찾으면 Person 클래스 정보를 메모리에 올리게 된다. 이때, 클래스 정보 자체는 정적이라고 말한다. 왜냐하면, 클래스 정보 자체는 실행되는 것이 아니기 때문이다. 즉, SSD에 저장되어 있던 클래스를 읽어들여서 자바가 사용할 수 있는 메모리 영역에 그 정보를 올리게 된다. 이때, 클래스에 static 필드가 있는지 살펴보게 된다.
즉, Person p1 = new Person(); 이 실행되려면 Person 클래스가 필요하다. 이때, JVM은 CLASSPATH에서 Person 클래스를 찾고, Person 클래스 정보를 메모리에 올린다. 그리고 Person 클래스 정보를 읽어들일 때, static한 필드는 정적 영역에 따로 저장된다. 따라서 만약 count라는 변수가 정적으로 선언되었다면, 이 변수는 정적영역에 별도로 저장되고 0으로 초기화된다. 그리고 이런 static 필드는 클래스명.필드명 형식으로 사용하는게 옳다.
728x90
'Language > Java' 카테고리의 다른 글
자바 버전별 메모리 영역과 인스턴스 생성 (0) | 2023.09.13 |
---|---|
클래스 메서드에서 인스턴스를 필드를 사용하지 못하는 이유 (0) | 2023.09.13 |
CLASS METHOD vs INSTANCE METHOD (0) | 2023.09.13 |
Math클래스 API (0) | 2023.09.13 |
JVM의 CLASSPATH 옵션 (0) | 2023.09.13 |