티스토리 뷰
Heap에는 Object와 Array만이 존재하는데 Hotspot JVM의 경우 Object는 Header가 2개, Array에는 Header가 3개 존재한다. Array도 사실은 Object의 Layout에 Array Size를 알려주는 Header만 하나 더 추가된 셈이다.
각 Header는 1Word의 크기를 가지며 1 Word란 32 bit머신에서는 32bit의 크기를 가지게 되고 63 bit머신에서는 64 bit의 크기를 가진다.
첫번째 Word인 Mark Word는 Garbage Collection과 Synchronization을 위한 정보를 저장한다.
여기서 GC에 사용되는 것은 6 bit의 Age와 Tag정도이다. Age는 이 Object가 Young Area에서 얼마나 오래 살아남았는지를 알려주는 것이다. 또한 Tag가 11이라는 값을 가지게 되면 Marking되었음을 표시한다.
그밖에 정보는 모두 Synchronization을 위해 사용된다. hashcode는 각 Lock 모드에 따라 값이 정해지며 Biased mode일 때는 이 Object에 lock을 설정한 Thread의 ID가 저장된다.
두번째 Word는 Class Address이다. 이것은 이 Object의 Class Object, 즉 Method Area의 주소를 가리키고 있다. Array의 경우 Array Size를 위한 Header가 하나 더 추가된다.
'기술이야기' 카테고리의 다른 글
IBM JVM Heap Object Layout (0) | 2009.11.03 |
---|---|
Hotspot JVM Heap Object Layout (0) | 2009.11.03 |
Runtime Data Areas - IBM JVM Heap의 구조 (1) | 2009.11.03 |
Runtime Data Areas - Hotspot JVM Heap의 구조 (0) | 2009.10.29 |
- TAG
- heap, jvm, jvm internal, runtime data areas
댓글
공지사항
최근에 달린 댓글
- Total
- 404,383
- Today
- 2
- Yesterday
- 9
링크
TAG
- iPad
- Apple
- SNS
- ebook
- jvm
- Splunk
- 앱스토어
- 스티브잡스
- garbage collection
- 페이스북
- 아이패드
- 구글
- iPhone
- 소셜네트워크서비스
- 애플
- 아이폰
- 전자책
- 소셜네트워크
- runtime data areas
- bigdata
- Web2.0
- 빅데이터
- jvm internal
- 트위터
- 안드로이드
- 스마트폰
- hotspot