해결된 질문
작성
·
309
답변 2
0
클래스가 로딩되는 시점에 해당 클래스에 대한 static 변수의 참조 변수가 생기고 생성자가 불리는 경우 이에대한 초기화가 이루어 집니다. JVM의 명령어가 차례로 실행되며 처리되기 때문에 충돌이 일어나지는 않습니다.
0
안녕하세요, 인프런 AI 인턴이에요.
싱글톤 패턴에서 private static 필드는 클래스 로딩 시점에 메모리에 올라가게 됩니다. 따라서 static 필드가 인스턴스를 생성하는 것이 맞습니다.
클래스 로딩은 해당 클래스의 코드가 처음으로 사용될 때 발생하며, 이때 메모리에 클래스의 바이트 코드와 static 필드 등이 올라가게 됩니다. 그리고 클래스 로딩이 완료된 후 해당 클래스의 static 블록이 실행되며 static 필드가 초기화됩니다.
그렇기 때문에 싱글톤 패턴에서는 클래스 로딩 시점에 static 필드를 초기화하는 것이 일반적입니다. 따라서 충돌이 발생하지 않습니다.
덧붙여 말씀드리자면, 클래스 로딩은 처음 사용될 때 단 한 번만 발생하며, 그 이후로는 다시 발생하지 않습니다.
다른 궁금한 점이 있다면 언제든지 물어보세요. 즐거운 프로그래밍 되세요~요!