Java Object Layout

以下步驟是查看物件佔用記憶體大小(byte)。

下載jol-core.jar,點擊下圖方框的部分。

img

img

加入jol-core.jar

img

img

img

包裝類別的佔用記憶體大小

1
2
3
4
5
6
7
8
9
10
11
12
import org.openjdk.jol.info.ClassLayout;

public class Test {
  public static void main(String[] args) {
    System.out.println(ClassLayout.parseInstance((byte)1).toPrintable());      // Byte
    System.out.println(ClassLayout.parseInstance('a').toPrintable());         // Character
    System.out.println(ClassLayout.parseInstance(1).toPrintable());           // Integer
    System.out.println(ClassLayout.parseInstance(1L).toPrintable());          // Long
    System.out.println(ClassLayout.parseInstance(1.0f).toPrintable());       // Float
    System.out.println(ClassLayout.parseInstance(1.0).toPrintable());        // Double
  }
}
=============Boolean===================
java.lang.Boolean object internals:
OFF  SZ      TYPE DESCRIPTION               VALUE
  0   8           (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
  8   4           (object header: class)    0x00006390
 12   1   boolean Boolean.value             true
 13   3           (object alignment gap)    
Instance size: 16 bytes
Space losses: 0 bytes internal + 3 bytes external = 3 bytes total

=============Character===================
java.lang.Character object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     0x0000002d6b418f01 (hash: 0x2d6b418f; age: 0)
  8   4        (object header: class)    0x00023288
 12   2   char Character.value           a
 14   2        (object alignment gap)    
Instance size: 16 bytes
Space losses: 0 bytes internal + 2 bytes external = 2 bytes total

=============Byte===================
java.lang.Byte object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     0x00000033affdfa01 (hash: 0x33affdfa; age: 0)
  8   4        (object header: class)    0x00033da8
 12   1   byte Byte.value                1
 13   3        (object alignment gap)    
Instance size: 16 bytes
Space losses: 0 bytes internal + 3 bytes external = 3 bytes total

=============short===================
java.lang.Short object internals:
OFF  SZ    TYPE DESCRIPTION               VALUE
  0   8         (object header: mark)     0x0000007413b5b301 (hash: 0x7413b5b3; age: 0)
  8   4         (object header: class)    0x00035c40
 12   2   short Short.value               1
 14   2         (object alignment gap)    
Instance size: 16 bytes
Space losses: 0 bytes internal + 2 bytes external = 2 bytes total

=============Integer===================
java.lang.Integer object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     0x00000063c12bbe01 (hash: 0x63c12bbe; age: 0)
  8   4        (object header: class)    0x00026830
 12   4    int Integer.value             1
Instance size: 16 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

=============Long===================
java.lang.Long object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     0x0000001d9ff05801 (hash: 0x1d9ff058; age: 0)
  8   4        (object header: class)    0x00037950
 12   4        (alignment/padding gap)   
 16   8   long Long.value                1
Instance size: 24 bytes
Space losses: 4 bytes internal + 0 bytes external = 4 bytes total

=============Float===================
java.lang.Float object internals:
OFF  SZ    TYPE DESCRIPTION               VALUE
  0   8         (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
  8   4         (object header: class)    0x00031228
 12   4   float Float.value               1.0
Instance size: 16 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

=============Double===================
java.lang.Double object internals:
OFF  SZ     TYPE DESCRIPTION               VALUE
  0   8          (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
  8   4          (object header: class)    0x00032820
 12   4          (alignment/padding gap)   
 16   8   double Double.value              1.0
Instance size: 24 bytes
Space losses: 4 bytes internal + 0 bytes external = 4 bytes total

results matching ""

    No results matching ""