inflearn logo
강의

Course

Instructor

Mastering Java Basics with Teacher Eun-jong (Do it! Introduction to Java Programming) - Part 1 (Basics)

static Application - Singleton Pattern

singleton pattern

Resolved

380

yongtech54

15 asked

0

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

 

private static Company company = new Company();

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

 

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

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

java 객체지향

Answer 2

0

eunjong

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

0

communityai8509

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

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

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

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

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

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

질문드려요

0

437

4

구현과 오버라이딩

0

238

1

문제답안

1

240

2

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

1

320

1

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

0

567

1

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

0

469

2

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

0

545

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

485

1

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

0

374

3

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

0

389

2

비트 연산자 질문

0

295

1

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

0

334

1

p.243

0

233

2

p.237

0

250

2

p.196

0

271

1

질문드려요

0

242

1