日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 变量 占用空间_Java-空变量是否需要内存空间

發布時間:2025/5/22 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 变量 占用空间_Java-空变量是否需要内存空间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

您可以使用jol來獲取該類的布局。(但是要小心,您可能需要更深入地了解其背后的機制,不要盲目相信結果,并且要知道這只是當前使用的VM的估算值(在我的案例中為1.7.0_76 x64 win):):

我使用CLI版本,我猜正確的方法是將庫包含在您的項目中,但是無論如何,它似乎可以這樣工作:

test>java -cp target\classes;jol-cli-0.3.1-full.jar org.openjdk.jol.Main internals test.CheckStore

Running 64-bit HotSpot VM.

Using compressed oop with 0-bit shift.

Using compressed klass with 0-bit shift.

Objects are 8 bytes aligned.

Field sizes by type: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes]

Array element sizes: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes]

VM fails to invoke the default constructor, falling back to class-only introspection.

test.CheckStore object internals:

OFFSET? SIZE? ? TYPE DESCRIPTION? ? ? ? ? ? ? ? ? ? VALUE

0? ? 12? ? ? ? ?(object header)? ? ? ? ? ? ? ? N/A

12? ? ?1 boolean CheckStore.state? ? ? ? ? ? ? ?N/A

13? ? ?3? ? ? ? ?(alignment/padding gap)? ? ? ? N/A

16? ? ?4? String CheckStore.displayText? ? ? ? ?N/A

20? ? ?4? String CheckStore.meaningfulText? ? ? N/A

24? ? ?4? ? ?URL CheckStore.url? ? ? ? ? ? ? ? ?N/A

28? ? ?4? ? ? ? ?(loss due to the next object alignment)

Instance size: 32 bytes (estimated, the sample instance is not available)

Space losses: 3 bytes internal + 4 bytes external = 7 bytes total

與自動壓縮的oops相同:

test>java -XX:-UseCompressedOops -cp target\classes;jol-cli-0.3.1-full.jar org.openjdk.jol.Main internals test.CheckStore

Running 64-bit HotSpot VM.

Objects are 8 bytes aligned.

Field sizes by type: 8, 1, 1, 2, 2, 4, 4, 8, 8 [bytes]

Array element sizes: 8, 1, 1, 2, 2, 4, 4, 8, 8 [bytes]

VM fails to invoke the default constructor, falling back to class-only? introspection.

test.CheckStore object internals:

OFFSET? SIZE? ? TYPE DESCRIPTION? ? ? ? ? ? ? ? ? ? VALUE

0? ? 16? ? ? ? ?(object header)? ? ? ? ? ? ? ? N/A

16? ? ?1 boolean CheckStore.state? ? ? ? ? ? ? ?N/A

17? ? ?7? ? ? ? ?(alignment/padding gap)? ? ? ? N/A

24? ? ?8? String CheckStore.displayText? ? ? ? ?N/A

32? ? ?8? String CheckStore.meaningfulText? ? ? N/A

40? ? ?8? ? ?URL CheckStore.url? ? ? ? ? ? ? ? ?N/A

Instance size: 48 bytes (estimated, the sample instance is not available)

Space losses: 7 bytes internal + 0 bytes external = 7 bytes total

如果您的字段為null,那么這些只是對象本身的布局,那么它將不會指向更多對象,否則您還必須查看目標類型(URL和String)。(并且,如果您擁有所有這些實例的多個實例,則取決于您使用相同的多次還是不同的實例)。空字段不能在內存中跳過,因為分配實例時需要調整實例的大小。所以這些字段都是預先構造的,它們只是不引用堆上其他地方分配的對象。

注意:如果實現默認的構造函數,則會獲得更多詳細信息,但是在這種情況下的大小將是相同的。如果您想知道字段的順序和填充的來源,可以查看這篇文章 -(基本上,它將對象對齊8個字節,按大小對字段進行排序,將相同類型分組在一起,最后引用。來自超級類型的字段排在最前面, 4個字節對齊。)

總結

以上是生活随笔為你收集整理的java 变量 占用空间_Java-空变量是否需要内存空间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。