Apa——Apakah rujukan yang lemah?
Rujukan lemah dalam Java secara khusus merujuk kepada kelas java.lang.ref.WeakReference
Andaikan pemungut sampah menentukan pada masa tertentu bahawa objek lemah boleh dicapai (iaitu, semua titik semasa yang menunjuk kepadanya adalah rujukan lemah), maka pemungut sampah akan Kosongkan semua rujukan yang lemah ke objek, dan kemudian tandakan objek yang boleh dicapai dengan lemah sebagai boleh dimuktamadkan supaya ia akan dikitar semula kemudian. Pada masa yang sama atau kemudian, pemungut sampah akan meletakkan rujukan lemah yang baru sahaja dikosongkan ke dalam baris gilir rujukan (Reference Queue) yang ditentukan semasa mencipta objek rujukan yang lemah.
Sebenarnya, terdapat empat jenis rujukan dalam Java, iaitu daripada kuat kepada lemah ialah: rujukan kuat, rujukan lembut, rujukan lemah dan rujukan maya. Di bawah ini kami memperkenalkan secara ringkas tiga jenis rujukan yang lain kecuali rujukan yang lemah:
- Rujukan Kuat: Biasanya apabila kita mencipta objek baru melalui yang baru, rujukan yang dikembalikan adalah rujukan yang kuat, jika objek boleh dicapai melalui satu siri rujukan yang kuat, ia boleh dicapai dengan kuat, maka ia tidak akan dikitar semula
- Rujukan Lembut: Rujukan Lembut Perbezaan antara rujukan dan rujukan lemah ialah jika objek boleh dicapai dengan rujukan yang lemah, ia akan dikitar semula tanpa mengira sama ada memori semasa mencukupi, manakala objek yang boleh dicapai oleh rujukan lembut akan dikitar semula apabila ingatan tidak mencukupi, jadi rujukan lembut adalah lebih baik daripada rujukan lemah. Rujukan adalah "lebih kuat"
- Rujukan Hantu: Rujukan Hantu ialah rujukan paling lemah di Jawa, jadi sejauh manakah ia lemah? Ia sangat rapuh sehinggakan kita tidak boleh mendapatkan objek yang dirujuk melalui rujukan maya Satu-satunya tujuan rujukan maya ialah apabila objek yang dituju dikitar semula, rujukan maya itu sendiri akan ditambahkan pada baris gilir rujukan untuk merekodkannya. Objek runcing telah dikitar semula.
Pertimbangkan senario berikut: Kini terdapat kelas Produk yang mewakili produk Kelas ini direka bentuk untuk tidak boleh dilanjutkan, dan pada masa ini kami mahu menambah nombor pada setiap produk . Satu penyelesaian ialah menggunakan HashMap
Jadi dalam kes ini, jika kita ingin benar-benar mengitar semula objek Produk, tidak cukup dengan hanya memberikan rujukan kukuhnya kepada null, tetapi juga untuk mengalih keluar masukan yang sepadan daripada HashMap. Jelas sekali kami tidak mahu melakukan kerja "mengalih keluar entri yang tidak diperlukan lagi daripada HashMap" sendiri Kami ingin memberitahu pemungut sampah bahawa apabila hanya kekunci dalam HashMap merujuk kepada objek Produk, objek Produk yang sepadan boleh menjadi. dikitar semula. Jelas sekali, menurut definisi rujukan lemah sebelum ini, menggunakan rujukan yang lemah boleh membantu kita mencapai matlamat ini. Kita hanya perlu menggunakan objek rujukan lemah yang menunjuk ke objek Produk sebagai kunci dalam HashMap.
Bagaimana——Bagaimana untuk menggunakan rujukan yang lemah?
Ambil senario yang diterangkan di atas sebagai contoh Kami menggunakan objek rujukan yang lemah yang menunjuk ke objek Produk sebagai kunci HashMap Kami hanya perlu mentakrifkan objek rujukan yang lemah seperti ini :
Produk produkA = Produk baharu(...);
WeakReferenceweakProductA = WeakReference(productA); Sekarang, jika objek weakProductA dirujuk Ia menunjuk kepada Product object productA. Jadi bagaimana kita mendapatkan produk objek ProdukA yang ditunjukkannya melalui weakProduct? Ia sangat mudah. Anda hanya memerlukan kod berikut:
Product product = weakProductA.get();
Malah, untuk situasi ini, perpustakaan kelas Java menyediakan kami kelas WeakHashMap, yang boleh digunakan dengan kelas ini, kuncinya secara semula jadi adalah objek rujukan yang lemah, dan kita tidak perlu membungkus objek asal secara manual. Dengan cara ini, apabila productA menjadi batal (menunjukkan bahawa Produk yang dirujuknya tidak perlu lagi wujud dalam ingatan), objek rujukan lemah weakProductA menunjuk ke objek Produk Jelas sekali, objek Produk yang sepadan adalah lemah pada masa ini. jadi rujukan lemah yang menunjuk kepadanya akan dikosongkan, objek Produk akan dikitar semula serta-merta, dan objek rujukan lemah yang menunjuk kepadanya akan memasuki baris gilir rujukan.
Barisan Rujukan
Mari perkenalkan secara ringkas konsep baris gilir rujukan. Malah, kelas WeakReference mempunyai dua pembina:
//创建一个指向给定对象的弱引用 WeakReference(T referent) //创建一个指向给定对象并且登记到给定引用队列的弱引用 WeakReference(T referent, ReferenceQueue super T> q)
Atas ialah kandungan terperinci Mempelajari dan memahami rujukan lemah Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Javaachievesplatformindependencethroughthejavavirtualmachine (JVM), membenarkancodetorunondifferentoperatingsystemswithoutmodification.thejvmcompilesjavacodeintoplatform-bebastbytecode, yang mana-mana

Javaispowerfulduetoitsplatformindantrectence, orientednature orientednature, richstandardlibrary, perfanksapabilities, andstrongSecurityfeatures.1) PlatformIndendenceAllowsApplicationStorAnanydeviceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceDeviceViceDeviceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceViceD

Fungsi Java teratas termasuk: 1) pengaturcaraan berorientasikan objek, menyokong polimorfisme, meningkatkan fleksibiliti kod dan pemeliharaan; 2) mekanisme pengendalian pengecualian, meningkatkan keteguhan kod melalui blok percubaan-catch-finally; 3) pengumpulan sampah, memudahkan pengurusan memori; 4) generik, meningkatkan keselamatan jenis; 5) Ekspresi AMBDA dan pengaturcaraan berfungsi untuk menjadikan kod lebih ringkas dan ekspresif; 6) Perpustakaan standard yang kaya, menyediakan struktur data dan algoritma yang dioptimumkan.

Javaisnotentirelyplatformindependentduetojvmvariationsandnativecodeintegration, butitlargelyupholdsitsworapromise.1) javacompil estobytecoderunbythejvm, membolehkanCross-platformexecution.2) Walau bagaimanapun, setiap satuplatformrequiresaspecificjvm, dandifferencesinjvmimpleme

Thjavavirtualmachine (jvm) isanabstractcomputingmachinecrucialforjavaexecutionasitrunsjavabytecode, enablingthe "writeonce, rayanywhere" kemampuan.TheJvm'skeycomponentlude: 1)

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)

Javaisgreatduetoitsplatformindantrect, robustoopsupport, extensivelibraries, andstrongcommunity.1) platformindependenceviajvmallowscodetorunonvariousplatforms.2)

Lima ciri utama Java adalah polimorfisme, ekspresi lambda, streamsapi, generik dan pengendalian pengecualian. 1. Polimorfisme membolehkan objek kelas yang berbeza digunakan sebagai objek kelas asas biasa. 2. Ekspresi Lambda menjadikan kod lebih ringkas, terutama sesuai untuk mengendalikan koleksi dan aliran. 3.StreamsAPI dengan cekap memproses set data yang besar dan menyokong operasi deklaratif. 4. Generik menyediakan jenis keselamatan dan kebolehgunaan semula, dan kesilapan jenis ditangkap semasa penyusunan. 5. Pengendalian Pengecualian membantu mengendalikan kesilapan dengan elegan dan menulis perisian yang boleh dipercayai.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod
