강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

따라란따라란님의 프로필 이미지
따라란따라란

작성한 질문수

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

대표적 GC 알고리즘(Mark, Sweep, Compact)

method area는 이름이 class area가 아니고 왜 method aread인지 궁금합니다.

해결된 질문

작성

·

83

0

제 궁금증은 method area는 이름이 class area가 아니고 왜 method aread인가? 입니다.JVM specification저자 중 한명에게 이메일 보내봤는데

I'm afraid I don't know the answer to your question. My involvement with Java ended in October 2006, and I have never looked back.  I think these terms (Method Area, Class Area) were introduced after my time working on Java.

라는 답변을 받긴 했습니다.그래서 열심히 ai와 물어봤는데 자바에서 프로그램 실행은 메서드 호출을 통해서 이루어지기 때문이라고 추측하더라구요.
저는 막연히 자바는 객체지향 언어니까 class가 중심이지라고 생각했는데..
또 "실행" 관점에서 보면 진짜 method가 중심이겠더라구요.
객체인스턴스 초기화도 결국  init()메서드인거구요.음.. 어떻게 생각하시는지? 궁금합니다!

답변 2

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

제가 Java를 만든 것은 아니므로 어디까지나 추정으로만 말씀드릴 수 있을 것 같습니다.

H/W CPU 수준에서 함수는 고려하고 있습니다. 그러나 객체 혹은 클래스 같은 개념은 들어있지 않습니다. 즉, 객체라는 개념은 하드웨어 수준에는 아예 존재조차 하지 않는 추상적인 것입니다. 결국 하드웨어 수준에서 실행 혹은 연산의 단위를 논할 때 객체라는 개념은 존재하지 않으며 반대로 함수는 결코 뺄 수 없는 것입니다.

C/C++ 언어에서 함수는 존재합니다. C++의 메서드도 결국은 그냥 함수로 인식되어 기계어로 번역됩니다. 특정 클래스에 속했다는 의미는 언어의 문법에서만 존재할 뿐 실행 코드(기계어)로 번역되는 과정에서는 Name mangling을 통해 클래스와 무관한 독립적인 함수로 변환됩니다.

Java는 C++와 달리 클래스 없이 존재할 수 있는 함수가 문법적으로 아예 없습니다. 따라서 클래스의 멤버 함수인 메서드로만 존재합니다. 그리고 소위 실행 코드라는 것은 결국 메서드 단위로 존재합니다.

그런 이유로 어쩌면 클래스 영역이라는 개념보다 메서드 영역이라는 것이 더 알맞은 것이 아닐까 싶습니다. 참고하시기 바랍니다. 😄

넵 답변감사합니다~!

0

안녕하세요, 인프런 AI 인턴입니다. 따라란따라란님.

질문 주신 내용에 대해 말씀드리겠습니다. JVM의 ‘Method Area’는 JVM 사양에서 주요한 메모리 영역 중 하나로, 클래스의 구조와 메서드 정보를 저장하는 공간입니다. 이 공간의 명칭과 관련된 궁금증이 있으신 것 같습니다.

‘Method Area’라는 이름은 다음과 같은 이유로 해석해볼 수 있습니다:

  1. 클래스와 메서드 정보 저장: Method Area는 JVM에서 실행되는 클래스들의 메서드 코드, 필드 정보, 메타데이터를 저장합니다. 따라서, 클래스의 구조적 정의보다도 메서드 실행과 관련된 정보를 저장하는 기능이 부각되었기 때문에 ‘Method’라는 이름이 붙은 것으로 볼 수 있습니다.

  2. 메서드 중심의 실행: 자바 프로그램은 클래스 내부의 메서드들이 실제로 프로그램 실행을 이끌어 나가는 중심적인 역할을 합니다. 객체 지향 언어이지만, 실행 관점에서는 메서드가 실행의 단위를 이루고 있습니다. 따라서, 이러한 실행의 중심축인 메서드를 강조한 것으로 이해할 수 있습니다.

  3. 역사적인 명명: JVM 스펙에서 명시된 명칭은 역사의 산물인 경우가 많습니다. 초기 JVM 설계 시절부터 ‘Method Area’라는 명칭이 사용된 것이고, 그 명칭이 유지된 것으로 보여집니다.

추가로 살펴볼 수 있는 자료는 다음과 같습니다:

위 설명들이 질문에 대한 이해를 돕길 바랍니다. 학습 과정에서 추가적인 궁금증이 생기신다면, 계속해서 질문해 주세요. 강의와 함께 유익한 학습 되시기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

따라란따라란님의 프로필 이미지
따라란따라란

작성한 질문수

질문하기