inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

자바 메모리 구조

객체 생성과 메서드 호출에 대한 메모리 관점 흐름에 대해 질문 있습니다.

177

감바스

작성한 질문수 92

0

  1. 메서드 프레임은 메서드 영역에 있는 메서드 코드를 기반으로 생성되나요?

  2. 객체 생성과 메서드 호출에 대한 메모리 관점 흐름을 정리 해봤는데 맞게 정리한건지 궁금합니다. "객체 생성시 힙 영역에 객체 저장 -> 메서드 호출시 메서드 영역에 있는 호출한 메서드 코드를 찾음 -> 찾은 메서드 코드로 스택 영역에 메서드 프레임을 생성함"

  3. 힙 영역에서 메서드 영역에 있는 본인의 메서드 코드를 어떻게 찾는지 궁금합니다.

java 객체지향

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

감바스님, 객체 생성과 메서드 호출의 메모리 관점에서 흐름을 매우 잘 정리하셨습니다. 이해를 돕기 위해 각각의 질문에 대한 답변을 드리겠습니다.

  1. 메서드 프레임은 JVM의 스택 영역에 생성됩니다. 메서드 영역에는 클래스 정보(클래스 데이터, 메서드 코드 등)가 로드되며, 메서드 호출 시 해당 메서드의 코드를 기반으로 메서드 프레임이 스택 영역에 생성됩니다.

  2. 말씀하신 내용이 대체로 정확합니다. 객체 생성 시 해당 객체의 인스턴스 변수들이 힙 영역에 저장됩니다. 메서드 호출 시, JVM은 메서드 영역에 로드된 해당 메서드의 코드를 찾고, 이를 토대로 스택 영역에 메서드 프레임(메서드 실행에 필요한 지역 변수, 매개 변수, 반환 값 등을 포함하는 공간)을 생성합니다.

  3. 힙 영역에 있는 객체가 직접 메서드 영역에 접근해서 메서드 코드를 ‘찾는’ 것이 아니라, 메서드 호출 과정에서 JVM이 메서드 영역에서 해당 메서드의 코드를 참조합니다. 객체는 클래스 인스턴스이며, 메서드 호출은 해당 클래스 타입에 따라 메서드 영역에 정의된 코드를 실행하는 방식으로 이루어집니다. 객체의 메서드 호출은 런타임에 JVM이 관리하는 과정을 통해 이루어지며, 실행될 메서드의 코드 또한 메서드 영역에 적재된 클래스 정보를 바탕으로 참조됩니다.

모든 질문에 대한 답변이 이해가 되셨길 바라며, 추가적인 궁금증이 있으시면 언제든지 질문해주세요.

질문있습니다

0

27

1

1번 문제 질문입니다.

0

32

1

음악플레이어 문제 중 코드질문

0

26

1

9장 상속 문제와 풀이 질문

0

38

1

강의 자료에 사소한 오타가 있습니다.

0

49

2

매서드 참조값 반환??

0

66

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

70

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

74

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

66

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

97

1

Method1에서 Student 객체

0

73

1

3강 18. null 질문

0

68

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

75

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

90

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

136

1

기본편 객체지향 프로그래밍에 대한 정의

0

86

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

152

2