Projek pengumpulan sampah PHP termasuk: 1. Pengiraan rujukan, dengan mengira rujukan kepada pembolehubah, apabila kiraan adalah 0, pembolehubah akan dikeluarkan; Kosongkan objek yang tidak bertanda untuk memastikan pelepasan memori yang tidak digunakan lagi; Kumpulan memori membahagikan memori kepada blok bersaiz tetap Setiap blok mempunyai tanda yang menunjukkan sama ada ia digunakan Apabila objek tidak lagi digunakan, ia akan ditandakan sebagai bebas.
Persekitaran pengendalian artikel ini: sistem Windows 10, versi PHP 8.1.3, komputer Dell G3.
PHP ialah bahasa skrip dengan mekanisme pengumpulan sampah automatik yang boleh membantu pembangun secara automatik mengeluarkan memori yang tidak lagi digunakan. Terdapat beberapa jenis kutipan sampah dalam PHP:
1 Pengiraan Rujukan Kutipan Sampah: Mekanisme kutipan sampah terawal yang diguna pakai oleh PHP ialah pengiraan rujukan. Apabila pembolehubah dirujuk, kiraan rujukan dinaikkan sebanyak 1 apabila pembolehubah tidak dirujuk lagi, kiraan rujukan dikurangkan sebanyak 1. Apabila kiraan rujukan mencapai 0, ini bermakna pembolehubah tidak lagi digunakan dan memori boleh dikeluarkan. Kaedah ini mudah dan cekap, tetapi ia mempunyai masalah rujukan bulat, iaitu dua atau lebih objek merujuk antara satu sama lain, menyebabkan kiraan rujukan tidak pernah menjadi 0 dan ingatan tidak dapat dilepaskan.
2. Tanda dan Sapu Pengumpulan Sampah: Untuk menyelesaikan masalah rujukan pekeliling, PHP memperkenalkan mekanisme pengumpulan sampah tanda dan sapu. Mekanisme ini memastikan pelepasan memori yang tidak lagi digunakan dengan melintasi semua objek yang boleh dicapai, menandai objek yang dirujuk, dan kemudian mengosongkan objek yang tidak bertanda Walau bagaimanapun, ia memerlukan melintasi keseluruhan graf objek, dan kecekapan pemprosesan graf objek besar adalah rendah.
3. Pengumpulan Sampah Generasi: Untuk meningkatkan kecekapan kutipan sampah, PHP telah menggabungkan mekanisme kutipan generasi. Mekanisme ini membahagikan objek kepada generasi yang berbeza, dan setiap generasi mempunyai strategi pengumpulan sampah sendiri. Secara umumnya, objek yang baru dicipta akan diletakkan ke dalam generasi pertama Apabila generasi pertama penuh, kutipan sampah akan dicetuskan untuk mengitar semula objek yang tidak lagi digunakan. Jika sesuatu objek bertahan dalam pelbagai kutipan sampah, ia dipromosikan secara turun-temurun sehingga ia mencapai generasi tertua. Ini boleh mengurangkan kekerapan kutipan sampah dan meningkatkan kecekapan kitar semula.
4. Pengumpulan Sampah Kolam Memori: Untuk mengelakkan penjanaan serpihan memori, PHP memperkenalkan mekanisme pengumpulan sampah kolam memori. Mekanisme ini membahagikan memori kepada blok bersaiz tetap, dan setiap blok mempunyai bendera yang menunjukkan sama ada ia digunakan atau tidak. Apabila objek dicipta, blok diperuntukkan daripada kumpulan memori, dan apabila objek tidak lagi digunakan, blok ditandakan bebas. Ini boleh mengurangkan penjanaan pemecahan memori dan meningkatkan penggunaan memori.
Ringkasan
Projek pengumpulan sampah PHP terutamanya termasuk pengiraan rujukan, penyingkiran tanda, kitar semula generasi dan kumpulan memori. Setiap mekanisme kutipan sampah mempunyai kelebihan dan kekurangannya, dan pembangun boleh memilih mekanisme kutipan sampah yang sesuai berdasarkan keperluan tertentu.
Atas ialah kandungan terperinci Apakah projek kutipan sampah PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!