Seperti yang kita semua tahu, Java ialah bahasa berorientasikan objek, jadi apakah yang terkandung di dalam ingatan objek. Pertama sekali, Kebanyakan objek disimpan pada timbunan (kecuali untuk melarikan diri ).
Kemudian storan objek dalam timbunan dibahagikan terutamanya kepada tiga bahagian
Pengepala objek, data contoh objek, tambahan penjajaran (tatasusunan akan mempunyai satu lagi panjang Tatasusunan)
Pengepala objek:
tanda perkataan: Simpan Kod cincang dan kunci maklumat objek ( Naik taraf kunci) atau maklumat seperti umur penjanaan atau bendera GC
Penuding jenis: menyimpan penunjuk ke kelas di mana objek itu berada (fail kelas dalam metadata), lulus JVM Ini menentukan kelas mana objek ini dimiliki
Data contoh objek:
maklumat objek baharu, yang menyimpan maklumat data atribut kelas, termasuk maklumat atribut Kelas induk;
Akses kedudukan objek Java
Kaedah akses arus perdana terutamanya termasuk
menanganiPemegang: Sebuah blok memori dibahagikan kepada timbunan Java sebagai kolam pemegang, dan objek disimpan dalam rujukan dalam tindanan Alamat pemegang dan pemegang mengandungi maklumat alamat khusus bagi data contoh objek dan data taip
penunjuk langsung:
timbunan java Susun atur memori objek mesti mempertimbangkan cara menghalang akses kepada maklumat yang berkaitan dengan jenis data Apa yang disimpan dalam rujukan adalah alamat objek secara langsung.
Akses penuding terus ke objek tidak memerlukan overhed akses tidak langsung tambahan, dan pemegangnya mudah Apabila alamat objek berubah (pengumpulan sampah akan mengalihkan alamat objek), anda sahaja perlu menukar rujukan penunjuk itu sendiri dalam pemegang Tidak perlu menukar.
Proses penciptaan objek Java
Apabila mesin maya menemui arahan baharu, ia mula-mula menyemak sama ada kelas yang ditentukan
dimuatkan dan disahkan , sediakan. Selepas pemeriksaan kelas, mesin maya memperuntukkan memori untuk objek baharuBagaimana untuk memastikan keselamatan peruntukan memori timbunan di bawah keadaan serentak mesin maya menggunakan CAS untuk mengkonfigurasi pemulihan kegagalan Cuba pastikan atomicity
Selepas memperuntukkan memori, tetapkan pengepala objek, seperti contoh kelas, kod cincang, penuding maklumat metadata kelas (kawasan kaedah)
Laksanakan kaedah init (kaedah kernel), mulakan pembolehubah ahli, laksanakan blok kod instantiasi, panggil kaedah pembinaan kelas dan tetapkan alamat pertama objek dalam timbunan kepada pembolehubah rujukan .
Adakah benang peruntukan objek Java selamat?
CAS menambah percubaan semula kegagalan untuk memastikan integriti kemas kini.
Tertib instantiasi kelas Java
Ahli statik kelas induk dan blok permulaan statik dilaksanakan mengikut susunan yang muncul dalam kod
Ahli contoh kelas induk dan blok permulaan contoh ialah. dilaksanakan mengikut susunan ia muncul dalam kod Laksanakan
pembina kelas induk
ahli contoh subkelas dan blok permulaan ins dalam susunan ia muncul. dalam kod. Laksanakan
kaedah pembinaan subkelas dalam urutan
Atas ialah kandungan terperinci Apakah kaedah susun atur memori penyimpanan objek Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!