Artikel ini memperkenalkan metode menghitung berapa banyak objek ruang Java yang ditempati. Ini dibagikan kepada Anda untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
1. Kepala objek
Setidaknya ada dua kata di kepala objek. Jika itu adalah array, maka tiga kata adalah sebagai berikut:
Ii. Aturan
Pertama, objek apa pun adalah 8 byte yang disejajarkan, dan sifat -sifat disimpan dalam urutan [panjang, ganda], [int, float], [char, pendek], [byte, boolean], dan referensi. Misalnya:
tes kelas publik {byte a; int b; Boolean C; panjang d; Objek e;}Jika sifat -sifat objek ini disimpan secara berurutan, ruang yang akan ditempati adalah: head (8) + a (1) + padding (3) + B (4) + C (1) + padding (7) + D (8) + E (4) + Padding (4) = 40. tetapi menurut aturan ini, kami mendapatkan: kepala (8) + D (8) + b (4) = 4). padding (4) = 32. Anda dapat melihat bahwa itu menghemat banyak ruang.
Ketika datang ke hubungan warisan, ada aturan dasar: Pertama, anggota di kelas induk disimpan, dan kemudian anggota dalam subclass disimpan. Misalnya:
kelas A {long a; int b; int c;} kelas B memperluas A {long d;}Urutan dan ruang yang ditempati dengan cara ini adalah sebagai berikut: head (8) + a (8) + B (4) + C (4) + D (8) = 32. Jadi bagaimana jika atribut dalam kelas induk tidak cukup delapan byte? Ini memberikan aturan baru: jika interval antara anggota terakhir dari kelas induk dan anggota pertama kelas anak tidak cukup untuk 4 byte, ia perlu diperluas ke unit dasar 4 byte, misalnya: misalnya:
kelas A {byte a;} kelas B memperluas A {byte b;}Then the space occupied at this time is as follows: head(8) + a(1) + padding(3) + b(1) + padding(3) = 16. Obviously this method is rather wasteful, so there is: if the first member of the subclass is double or long, and the parent class does not use up 8 bytes, the JVM will break the rules and fill smaller data into the space, for example:
kelas A {byte a;} kelas B memperluas A {long b; C pendek C; byte d;}Ruang yang ditempati saat ini adalah sebagai berikut: kepala (8) + a (1) + padding (3) + C (2) + d (1) + padding (1) + B (8) = 24.
Di atas adalah metode menghitung berapa banyak ruang yang ditempati objek Java. Saya harap akan sangat membantu bagi semua orang untuk belajar pemrograman Java.