그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Java
Java

자바 프로그램은 어떤 흐름으로 실행되나요?

실무4/5
설계4/5
인간3/5
기초4/5

면접관의 질문 의도

단계를 외웠는지가 아니라, 컴파일·로딩·실행 엔진까지 이어 가며 성능·디버깅 이슈를 같은 그림 위에서 설명할 수 있는지 가르려는 질문이다.

큐레이션 답변

학습 자료

자바 소스는 javac가 바이트코드(.class)로 컴파일하고, 런타임에서는 클래스 로더가 필요한 클래스만 메모리에 끌어 올린다. 한 클래스는 로딩 → 링킹(검증·준비·해결) → 초기화 순으로 단계를 밟아 비로소 실행 가능한 상태가 되고, static 블록·필드 초기화는 이 마지막 초기화 시점에서 일어난다. 실행 엔진은 처음엔 인터프리터로 빠르게 시작했다가, 같은 메서드가 자주 호출되면 JIT가 그 핫스폿을 네이티브 코드로 컴파일해 캐시에 박는다. 이 혼합 전략 덕에 기동은 가볍게, 장기 실행 구간은 네이티브 수준으로 빨라진다.

좋은 답변 구조

  1. 01javac 컴파일과 바이트코드 산출물의 의미를 짚는다
  2. 02클래스 로더가 로딩·링킹·초기화 단계를 어떤 순서로 밟는지 설명한다
  3. 03인터프리터와 JIT가 어떻게 함께 동작하며 핫스폿을 잡는지 비교한다
  4. 04기동 지연·JIT 워밍업·static 초기화 같은 운영 관점 의미로 마무리한다

자주 실수하는 포인트

프로그램 시작 시 모든 클래스가 한꺼번에 로드된다고 본다
인터프리터와 JIT를 둘 중 하나만 동작하는 배타 관계로 이해한다
링킹의 세부 단계(검증·준비·해결)를 한 덩어리로 묶어 설명한다

실무 맥락

  • 기동 직후 응답이 느리다가 일정 시간 후 안정되는 서버에서 워밍업 구간을 분석해야 하는 상황
  • static 초기화 부작용으로 특정 클래스가 처음 사용될 때 예기치 않은 동작이 일어나는 코드
  • JVM 옵션(JIT 임계점·AOT·CDS)이 응답 시간·콜드 스타트에 직접 묻어나는 운영 환경

본인 경험에 녹이는 힌트

초기 응답 지연이 JIT 워밍업 때문인지 다른 요인 때문인지 측정으로 구분해 본 경험이 있다면 실행 엔진 직관 사례로 연결할 수 있다

static 초기화 시점에 묶인 부작용을 분리해 본 적이 있다면 클래스 초기화 트리거 이해로 엮을 수 있다

JVM 옵션(인라이닝·티어드 컴파일·AOT)을 만지며 성능을 본 경험이 있다면 인터프리터·JIT 혼합 전략 관점으로 말할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1클래스 초기화가 트리거되는 대표 조건은 무엇인가요
Q2JIT 컴파일 임계점은 어떻게 결정되나요
Q3AOT와 JIT의 선택 기준은 무엇인가요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문