Apabila menjalankan program java, setiap kelas dimuatkan sekali sahaja. Ia adalah mustahil untuk memuat semula. Jadi tidak ada rekursi seperti yang disebutkan dalam soalan.
Adalah disyorkan untuk memahami dahulu memori dalam mesin maya JVM
Semasa proses instantiasi objek AVA, komponen utama yang digunakan termasuk timbunan mesin maya, timbunan JAVA dan kawasan kaedah. Selepas fail JAVA disusun, ia akan ditambahkan terlebih dahulu ke kawasan kaedah JVM Bahagian yang sangat penting dalam kawasan kaedah JVM ialah kumpulan pemalar masa jalan - digunakan untuk menyimpan versi, medan, kaedah, antara muka dan penerangan lain bagi. fail kelas Maklumat dan pemalar masa kompilasi dan pembolehubah statik. Tempat di mana objek JAVA sebenarnya dijadikan instantiated adalah dalam timbunan JAVA dan timbunan mesin maya, Objek A = New Object(); dalam ingatan sebenar, A sebenarnya bersamaan dengan nama yang kami berikan kepada pelaksanaan kelas Objek. Dalam pengaturcaraan berorientasikan objek, sama seperti anjing tergolong dalam kategori haiwan, tetapi kami akan memberi nama untuk membezakan anjing tertentu. Objek digunakan untuk menandakan bahawa A tergolong dalam kelas ini, dan A merujuk kepada pelaksanaan khusus Objek, dan Objek Baru adalah bersamaan dengan mencipta pelaksanaan khusus kelas ini. Oleh itu, kita boleh memahami bahawa objek mesti terlebih dahulu dapat menentukan kelas yang dimilikinya, dan kedua, ia juga mesti dapat menentukan pelaksanaan khusus yang dirujuknya. Terdapat dua kaedah pelaksanaan yang sepadan:
1. Mengendalikan objek akses
2. >HotSpot menggunakan kaedah pelaksanaan kedua. Pemuatan kelas merangkumi 3 langkah: memuatkan, memaut dan memulakan MemuatkanSeperti yang ditunjukkan dalam rajah di atas, tidak sukar bagi kita untuk memahami bahawa apabila objek disegerakan Pada masa ini, JVM akan bahagikan kawasan memori dalam timbunan JAVA mengikut jenis objek yang diperlukan, dan jana penuding kepada jenis data objek kawasan kaedah untuk mengenal pasti objek. Pautan Penunjuk dalam jadual pembolehubah tempatan (juga dipanggil jadual pembolehubah tempatan) dalam tindanan mesin maya menghala ke kawasan memori yang dibahagikan dalam timbunan JAVA. Mesin maya JAVA menggunakan pautan dinamik Hanya fail kelas yang disusun tidak menyimpan perwakilan kaedah akhir dalam ingatan. Inisialisasi Initialization sebenarnya ialah panggilan kepada kaedah permulaan dalam fail kelas, dan terasnya ialah POP/PUSH bagi bingkai tindanan dalam tindanan mesin maya. Ia bersamaan dengan melakukan proses pemuatan yang sama pada objek dalam kelas. Pada ketika ini, proses instantiasi lengkap sesuatu objek telah diperkenalkan.
Jujukan permulaan dalaman kelas ialah domain statik->domain bukan statik->pembina
Disyorkan untuk membaca: [JAVA Notes-Tao] Penjelasan terperinci tentang kitaran hayat objek [JAVA Notes-Tao] Pemahaman permulaan kelas
Adakah poster itu berfikir terlalu mendalam? Takrifan segera dan pengisytiharan ialah 2 konsep dan peringkat. A2 mempunyai beberapa pembolehubah ahli statik yang dijadikan instantiated apabila diisytiharkan, dan proses instantiasi kelas diselesaikan melalui pembina. Nampaknya ada sarang di sini, tetapi tidak. Pengkompil boleh mengisytiharkan lompatan arahan semasa menyusun pernyataan instantiasi, dan alamat lompatan ditentukan semasa penyusunan sekunder. Dengan cara ini, semasa fasa pengisytiharan kelas, apabila a, b, c, d dibuat seketika, pengkompil akan melompat ke blok pembina A2(int i). Lompat ke pembina A() semasa fasa instantiasi kelas. Secara terang-terangan, ia hanya memanggil kaedah pembinaan yang sepadan pada peringkat yang berbeza Tiada sarang gelung seperti yang difikirkan oleh penulis.
Apabila memuatkan kelas, susunan pemuatan untuk pembolehubah statik dan pembina adalah berbeza. Kaedah konstruktor juga merupakan kaedah statik. Saya tidak tahu banyak tentangnya, jadi saya akan duduk dahulu
Apabila menjalankan program java, setiap kelas dimuatkan sekali sahaja. Ia adalah mustahil untuk memuat semula. Jadi tidak ada rekursi seperti yang disebutkan dalam soalan.
Adalah disyorkan untuk memahami dahulu memori dalam mesin maya JVM
Semasa proses instantiasi objek AVA, komponen utama yang digunakan termasuk timbunan mesin maya, timbunan JAVA dan kawasan kaedah.
Selepas fail JAVA disusun, ia akan ditambahkan terlebih dahulu ke kawasan kaedah JVM Bahagian yang sangat penting dalam kawasan kaedah JVM ialah kumpulan pemalar masa jalan - digunakan untuk menyimpan versi, medan, kaedah, antara muka dan penerangan lain bagi. fail kelas Maklumat dan pemalar masa kompilasi dan pembolehubah statik.
Tempat di mana objek JAVA sebenarnya dijadikan instantiated adalah dalam timbunan JAVA dan timbunan mesin maya, Objek A = New Object(); dalam ingatan sebenar, A sebenarnya bersamaan dengan nama yang kami berikan kepada pelaksanaan kelas Objek. Dalam pengaturcaraan berorientasikan objek, sama seperti anjing tergolong dalam kategori haiwan, tetapi kami akan memberi nama untuk membezakan anjing tertentu. Objek digunakan untuk menandakan bahawa A tergolong dalam kelas ini, dan A merujuk kepada pelaksanaan khusus Objek, dan Objek Baru adalah bersamaan dengan mencipta pelaksanaan khusus kelas ini. Oleh itu, kita boleh memahami bahawa objek mesti terlebih dahulu dapat menentukan kelas yang dimilikinya, dan kedua, ia juga mesti dapat menentukan pelaksanaan khusus yang dirujuknya.
Terdapat dua kaedah pelaksanaan yang sepadan:
1. Mengendalikan objek akses
2. >HotSpot menggunakan kaedah pelaksanaan kedua.
Pemuatan kelas merangkumi 3 langkah: memuatkan, memaut dan memulakan
MemuatkanSeperti yang ditunjukkan dalam rajah di atas, tidak sukar bagi kita untuk memahami bahawa apabila objek disegerakan Pada masa ini, JVM akan bahagikan kawasan memori dalam timbunan JAVA mengikut jenis objek yang diperlukan, dan jana penuding kepada jenis data objek kawasan kaedah untuk mengenal pasti objek. Pautan Penunjuk dalam jadual pembolehubah tempatan (juga dipanggil jadual pembolehubah tempatan) dalam tindanan mesin maya menghala ke kawasan memori yang dibahagikan dalam timbunan JAVA. Mesin maya JAVA menggunakan pautan dinamik Hanya fail kelas yang disusun tidak menyimpan perwakilan kaedah akhir dalam ingatan.
Inisialisasi
Initialization sebenarnya ialah panggilan kepada kaedah permulaan dalam fail kelas, dan terasnya ialah POP/PUSH bagi bingkai tindanan dalam tindanan mesin maya. Ia bersamaan dengan melakukan proses pemuatan yang sama pada objek dalam kelas.
Pada ketika ini, proses instantiasi lengkap sesuatu objek telah diperkenalkan.
Jujukan permulaan dalaman kelas ialah domain statik->domain bukan statik->pembina
Disyorkan untuk membaca:
[JAVA Notes-Tao] Penjelasan terperinci tentang kitaran hayat objek
[JAVA Notes-Tao] Pemahaman permulaan kelas
Adakah anda mengelirukan pemuatan kelas dan permulaan objek?
Adakah poster itu berfikir terlalu mendalam? Takrifan segera dan pengisytiharan ialah 2 konsep dan peringkat.
A2 mempunyai beberapa pembolehubah ahli statik yang dijadikan instantiated apabila diisytiharkan, dan proses instantiasi kelas diselesaikan melalui pembina.
Nampaknya ada sarang di sini, tetapi tidak. Pengkompil boleh mengisytiharkan lompatan arahan semasa menyusun pernyataan instantiasi, dan alamat lompatan ditentukan semasa penyusunan sekunder.
Dengan cara ini, semasa fasa pengisytiharan kelas, apabila a, b, c, d dibuat seketika, pengkompil akan melompat ke blok pembina A2(int i).
Lompat ke pembina A() semasa fasa instantiasi kelas.
Secara terang-terangan, ia hanya memanggil kaedah pembinaan yang sepadan pada peringkat yang berbeza Tiada sarang gelung seperti yang difikirkan oleh penulis.
Apabila memuatkan kelas, susunan pemuatan untuk pembolehubah statik dan pembina adalah berbeza. Kaedah konstruktor juga merupakan kaedah statik.
Saya tidak tahu banyak tentangnya, jadi saya akan duduk dahulu