java에서 변수가 차지하는 메모리의 크기를 알 수 있나요?
조회수 1826회
원시타입 변수와 레퍼타입 변수의 메모리 사용을 비교하고 싶은데요. 가령:
short a = 1;
Short b = 1;
일 때 a와 b가 메모리 사용에 얼마나 차이가 있는지 알고 싶습니다. 인스턴스 변수, 클래스(스태틱) 변수, 메서드 내 로컬 변수 모두요.
방법이 있나요?
1 답변
-
둘 다 4바이트를 사용합니다.
jvm내 runtime area내 메소드의 지역변수들이 저장되는 local variable section 이라는 곳이 있습니다.
4바이트 단위로 저장되고 long 이나 double 같은 대형 타입의 경우에는 8 바이트를 사용합니다.(자바의 데이터 타입을 보면 알겠지만 프리미티브 타입들은 8바이트보다 큰 것은 없습니다.)
boolean 도 4바이트를 사용합니다. 그리고 jvm에서는 boolean 형이라는 것은 없고 그냥 int 0 혹은 1 입니다.
아 레퍼런스형도 당연히 4바이트 사용합니다.
댓글 입력