[질문입니다.] 다음의 변수들은 JVM에 어디에 있을까요?

2019-03-16 13:59

안녕하세요. 저는 캐나다에서 개발자로 일하고 있습니다. 여러 외국인들과 일을 하고 있는데요. 너무 기본적이면서도 중요한것에 대해서 너무 다양한의견이 있어서요.

아래의 변수들이 JVM에 어디에 존재하게 되느냐?

public class MemoryTest {

final String fs = "final String"; //A

final int fi = 1; //A

String s = "Member String"; //A

int i = 2; / /A

final static String fss = "final static String"; //B

final static int fsi = 3; //B

static String ss = "static String"; //C

static int si = 4; //C

public static void main(String args[]){
   MemoryTest m = new MemoryTest();
}

}

위의 코드를 byte code 분석을 통해서 답을 구했는데요. 전문가 여러분들 검증을 부탁드려도 될까요?

[제가 찾은 답입니다.]

//A : 객체생성시 Method Area의 constant pool에서 객체로 복사되고, 객체에서 실제값이 할당됨.

//B : Method Area의 constant pool에 존재, 객체로 복사되지 않음

// C : static {} 이 호출되어 질때 Method Area의 constalnt pool의 값을 참조하여 Class Variable에 값을 할당.

부탁드립니다. 감사합니다.

0개의 의견 from SLiPP

의견 추가하기

연관태그

← 목록으로