android - java中使用MAT是shallow size 单位是什么
伊谢尔伦
伊谢尔伦 2017-04-18 10:49:59
0
1
847

java中shallow size 单位是什么

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(1)
Peter_Zhu

Jika anda ingin menerangkan saiz cetek dengan jelas, anda mesti menyebut Saiz Tertahan.
saiz cetek: Menunjukkan saiz yang diduduki oleh objeknya sendiri.
saiz tertahan: saiz tertahan objek sendiri + objek rujukan.

Mari meminjam gambar dahulu, yang boleh mewakili hubungan pengiraan antara mereka dengan lebih jelas.

Saiz cetek B = B;

Saiz dikekalkan B = saiz cetek B + saiz dikekalkan C + saiz dikekalkan D;

Sebelum memberikan contoh, anda mesti terlebih dahulu memahami penyimpanan objek JAVA dalam timbunan Mari kita ambil mesin maya JVM 32-bit sebagai contoh:
Objek JAVA terdiri daripada 3 bahagian dalam timbunan:

  1. Pengepala objek
    Pengepala objek mengandungi dua bahagian data
    Satu: data masa jalan. JVM 32-bit ialah 32-bit, iaitu 4bait 64-bit ialah 8bait.

  2. Data tika

    ialah data yang menyimpan pembolehubah tikar termasuk dua jenis pembolehubah asas dan pembolehubah rujukan.
    Jangan bercakap tentang saiz bait yang diduduki oleh pembolehubah jenis asas Kami menyimpan penunjuk dalam pembolehubah rujukan.

  3. Mengisi data

    Ruang storan objek ialah gandaan integer 8 bait Jika pengepala objek + data tika kurang daripada gandaan integer 8 bait, ia akan diisi.

Bercakap tentang saiz jenis rujukan, rujukan menduduki 4 bait dalam mesin maya 32-bit Jika pemampatan penunjuk tidak didayakan dalam mesin maya 64-bit, rujukan menduduki 8 bait.

Kami akan menerangkan di bawah berdasarkan contoh:

public class TestObjSize {
    private int a = 1;
    private boolean b = true;
    private TestObjSize testObjSize;
    
    public static void main(String[] args) {
        Object object = new Object();
        TestObjSize test = new TestObjSize();//这个new出来的对象记为obj1
        test.testObjSize = new TestObjSize();//这个new出来的对象记为obj2
        
        System.out.println(object.hashCode());
        System.out.println(test.hashCode());
        
        try {
            Thread.sleep(3000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
Oleh kerana saiz cetek tidak ada kaitan dengan sama ada pembolehubah contoh mempunyai rujukan, kami mula-mula menganalisis saiz cetek **TestObjSize,

saiz cetek = 4bait (pengepala objek) + 4bait (penunjuk jenis) + 4bait (int a) + 1byte(boolean b) + 4byte(rujukan TestObjSize) = 17;**
17 bukan gandaan integer bagi 8, jadi akan terdapat 7 bait data padding objek jenis TestObjSize = 24;

Menurut contoh, kita melihat bahawa testObjSize objek obj2 = null,

saiz tertahan obj2 = saiz cetek obj2 = 24
Obj1 objek testObjSize ialah obj2, jadi obj1s saiz cetek = obj1's; saiz + saiz dikekalkan obj2 = 48;

Lampirkan timbunan di penghujung!

Jika terdapat sebarang kesilapan, sila beritahu saya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!