inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)

static 응용 - 싱글톤 패턴(singleton pattern)

singleton pattern

해결된 질문

380

잇택잇

작성한 질문수 15

0

싱글톤 패턴으로 클래스 작성시

 

private static Company company = new Company();

라고 작성을 하였는데 프로그램 실행 부터 메모리에 올라가는 static 필드가 바로 인스턴스를 생성하는건가요?

 

static 필드와 인스턴스의 생성 시점이 충돌하지는 않나요?

클래스 로딩과 static 필드 중 어떤게 먼저 메모리에 잡히는지 궁금합니다.

java 객체지향

답변 2

0

박은종

클래스가 로딩되는 시점에 해당 클래스에 대한 static 변수의 참조 변수가 생기고 생성자가 불리는 경우 이에대한 초기화가 이루어 집니다. JVM의 명령어가 차례로 실행되며 처리되기 때문에 충돌이 일어나지는 않습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

싱글톤 패턴에서 private static 필드는 클래스 로딩 시점에 메모리에 올라가게 됩니다. 따라서 static 필드가 인스턴스를 생성하는 것이 맞습니다.

클래스 로딩은 해당 클래스의 코드가 처음으로 사용될 때 발생하며, 이때 메모리에 클래스의 바이트 코드와 static 필드 등이 올라가게 됩니다. 그리고 클래스 로딩이 완료된 후 해당 클래스의 static 블록이 실행되며 static 필드가 초기화됩니다.

그렇기 때문에 싱글톤 패턴에서는 클래스 로딩 시점에 static 필드를 초기화하는 것이 일반적입니다. 따라서 충돌이 발생하지 않습니다.

덧붙여 말씀드리자면, 클래스 로딩은 처음 사용될 때 단 한 번만 발생하며, 그 이후로는 다시 발생하지 않습니다.

다른 궁금한 점이 있다면 언제든지 물어보세요. 즐거운 프로그래밍 되세요~요!

질문드려요

0

439

4

구현과 오버라이딩

0

239

1

문제답안

1

240

2

교재 속 나 혼자 코딩 문제 답안관련 질문

1

321

1

회차 강의pdf파일 보는 방법이 없나요?

0

568

1

return 사용되는 위치가 궁금합니다

0

469

2

오버라이드 할때 @override 안적어도 되나요?

0

547

1

pakage 내에서 main함수는 하나만 존재해야하나요?

0

727

1

왜 이렇게 하는지 설명은 없나요?

0

411

1

p.88 연습문제1 질문입니다.

0

281

1

강의노트 어디서 볼수 있을까요?

0

449

4

강의노트 어디서 볼 수 있을까요?

0

677

2

예제코드 다운로드 오류

0

538

1

복습문제는 어디서 확인할수있을까요?

0

410

1

static 메서드 main문 안에 선언 시 오류 발생 이유가 궁금합니다.

0

386

1

강의노트는 어디서 확인할 수 있을까요

0

486

1

실행을 하면 결과가 깨져서 나와요

0

374

3

복습 문제 들은 어디서 받아 볼 수 있나요

0

389

2

비트 연산자 질문

0

295

1

upgradeLevel에 인수를 넣기 위해 새로 AdvancedLevel 과 같은 instance를 생성하는게 어색하게 느껴집니다.

0

335

1

p.243

0

237

2

p.237

0

252

2

p.196

0

274

1

질문드려요

0

243

1