2014-11-11 5 views
4

클래스의 정적 메서드와 비 정적 메서드는 모두 메서드 영역에 저장된다는 것을 알고 있습니다.
하지만 자바가 객체의 최종 변수 (상수) 멤버와 정적 변수 멤버를 어디에서 저장하는지는 정말 의심 스럽습니다. 예를 들어Java는 최종 구성원과 정적 구성원을 어디에서 저장합니까?


,

class A{ 
    private final int a = 1; 
    private static int b = 2; 
    private static final int c = 3; 
    //other codes... 
} 

궁금 곳 메모리에 자바 저장 A, B, C 않습니다. 힙, 스택 또는 메소드 영역?


====== 업데이트 =====
이봐 요, 부장님 도움 나 JVM의 구성 요소에 대한 링크를 공유 할 수 있도록하시기 바랍니다 주셔서 감사합니다 : 자바 가상 내부 http://www.artima.com/insidejvm/ed2/jvm2.html

+2

Google을 사용하셨습니까? – SMA

+1

가능한 복제본 http://stackoverflow.com/questions/8387989/where-is-a-static-method-and-static-variable-stored-in-java-in-heap-or-in-sta – Rohan

+0

@ almasshaikh 예.하지만 대부분의 자료는 내가 구글을 가지고, 오직 그 최종 최종 변수를 저장할 위치를 말해. 예를 들어,이 하나 [http://stackoverflow.com/questions/5947352/question-about-local-final- variable-in-java]를 참조하십시오. – aMooly

답변

0

을 machine 인스턴스에서로드 된 유형에 대한 정보는 method area이라는 메모리의 논리 영역에 저장됩니다. 클래스에 선언 된 클래스 (정적) 변수에 대한 메모리는 메소드 영역에서 가져옵니다.

모든 인스턴스 변수는 최종 구성원을 포함하여 heap area에 저장됩니다.

+1

답변 해 주셔서 감사합니다. 그리고 최종 회원의 저장은 어떻게됩니까? – aMooly

+0

심지어 최종 변수이기는하지만 여전히 인스턴스 변수입니다. 따라서 객체 데이터와 함께 힙 영역에 저장됩니다. –