× - 코드 및 콘솔 화면은 [ code ] 내용 [ /code ] 태그 처리하여 주세요.
- 강조하고자 하는 내용은 [ b ] 내용 [ /b ] 태그 처리하여 주세요.

자바고양이 Tomcat 이야기 책을 보고 질문합니다

  • tommy100
    (vanallen)
  • tommy100's Avatar 이 글의 작성자
  • Offline
  • Newbie
  • Newbie
더보기
01 Oct 2017 08:44 #2839 작성자: tommy100
tommy100 님의 글: 자바고양이 Tomcat 이야기 책을 보고 질문합니다
자바고양이 Tomcat 이야기 책을 보고 질문합니다

27페이지 7 번째 줄에 보면

크기를 알 수 없는 객체는 Heap 영역에 저장되고
그 reference만 Local Variable에 저장된다.
이 reference는 1개 슬롯을 사용한다.

라고 되어있습니다.

32bit 컴퓨터에서는 이 슬롯이 32bit이므로
reference가 저장되는 공간이 32bit이죠.

그렇다면 64bit 컴퓨터에서는
reference가 저장되는 공간이 64bit인지요?
더보기
02 Oct 2017 01:31 - 02 Oct 2017 01:36 #2842 작성자: nastyboy
nastyboy 님의 답글: 자바고양이 Tomcat 이야기 책을 보고 질문합니다
말씀하신대로 "64bit 컴퓨터에서는 reference가 저장되는 공간이" 64bit 입니다. 정확히는 64bit JVM인 경우입니다.

정리하면,

  • 32bit JVM의 경우는 object reference가 32bit
  • 64bit JVM의 경우는 object reference가 64bit

다만 64bit JVM이라도 heap size가 32GB보다 적으면 -XX:+UseCompressedOops 옵션이 default로 설정되는데, 이 옵션에 의하여 32bit object reference가 됩니다. 물론 -XX:-UseCompressedOops로 비활성화시킬 수 있습니다. ( 오라클 문서 링크 )

1. 7점대 (OpenJDK)
$ java -XX:+PrintFlagsFinal -version|grep UseCompressedOops
     bool UseCompressedOops                        := true            {lp64_product}
java version "1.7.0_79"
OpenJDK Runtime Environment (rhel-2.5.5.3.el6_6-x86_64 u79-b14)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

2. 8점대 (Oracle)
$ java -XX:+PrintFlagsFinal -version|grep UseCompressedOops
     bool UseCompressedOops                        := true                                {lp64_product}
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
Time to create page: 0.091 seconds
Powered by Kunena Forum