인프런 커뮤니티 질문&답변
지역 클래스 예제3 지역변수 질문
작성
·
9
0
[질문 내용]
지역 클래스 예제3 의 LocalPrinter 인스턴스 생성 직후 메모리 그림인데 이때 스택 영역에서 이미지에 질문이 있습니다.
process 메소드가 끝나면서 x002 를 리턴하는데 이를 받는 변수가 main 메소드 내에 printer 지역변수가 있어야 되지않나요?
더해서 localOuter 의 변수또한 가져야 된다고 생각해서
스택 프레임이 사라지면 printer 변수에 담긴 객체는 '어떻게 지역변수와 파라미터를 기억하냐?' 에 대해서는 힙 영역의 객체를 가리키고 LocalPrinter 객체를 만들때 사라질 운명인 지역변수를 복사해서 넣어둔다고 이해했습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
무깨님의 질문은 Java의 지역 클래스와 변수 캡처와 관련하여 메모리 관리 및 스택 프레임의 사라짐에 대해 이해를 돕기 위한 것입니다. Java의 내부 클래스나 지역 클래스에서 구현된 이러한 개념은 놀랄 만큼 복잡하지만 매우 흥미롭습니다.
Java에서 내부 클래스는 자신을 감싸고 있는 메서드의 지역 변수와 매개 변수를 사용할 수 있습니다. 하지만 이러한 변수들은 메서드가 종료되면 사라지기 때문에, Java는 내부 클래스가 지역 변수의 ‘복사본’을 힙 메모리에 저장하여 해당 변수의 값에 접근할 수 있도록 합니다. 이를 통해 내부 클래스가 스코프 외부의 변수를 안전하게 참조할 수 있게 됩니다.
관련 강의 설명:
- 지역 클래스에서는 지역 변수가
final이거나 사실상final이어야 객체 생성을 통해 참조할 수 있습니다. 메서드가 종료되어도 내부 클래스를 통해 변수의 일종의 “스냅샷”이 남게 되는 것을 의미합니다.
설명 링크 및 추가 정보:
지역 클래스-지역 변수 캡쳐2 질문에서는 이런 지역 변수의 캡처와 관련된 자세한 설명과 함께 변수의
final특성의 이유에 대해 다루고 있습니다.지역 클래스 지역 변수 캡쳐 질문에서는 지역 클래스의 메소드 호출 시점과 객체 생성 시점에서 지역 변수의 값이 어떻게 처리되는지를 다룹니다.
이러한 설명은 궁극적으로 무깨님이 이해하고자 하는, Java 프로그램이 메모리 및 스택에서 지역 변수를 어떻게 관리하고 참조하는지에 대한 통찰력을 제공할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





