Prosedur Pemprosesan Acara dan Kitar Semula Sampah
Program pemprosesan acara memainkan peranan penting dalam menanggapi pelbagai acara. Walau bagaimanapun, salah faham yang biasa ialah prosedur pemprosesan peristiwa menghalang objek daripada dikitar semula oleh sampah.
prosedur kitar semula sampah dan pengendalian acara
dalam serpihan kod yang disediakan:
Pelanggan Insiden MyEvent ditugaskan kepada kaedah MyFunction. Apabila PCLASS ditugaskan untuk NULL, soalan itu muncul: sama ada PCLAS akan dipulihkan dengan serta -merta, atau sama ada ia masih wujud dan mencetuskan peristiwa.Jawapan: Pelanggan insiden tidak akan menjejaskan kitar semula sampah pulf
<code>MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass = null;</code>
Jawapannya adalah ya sama ada PCLAS akan dipulihkan oleh sampah. Langganan acara tidak akan menghalang pemulihan sampah objek penerbitan (PCLASS).
Walau bagaimanapun, perlu diperhatikan bahawa pulangan sampah objek sasaran (objek kejadian) adalah statik atau contoh berdasarkan sama ada kaedah MyFunction. prosedur pengendalian peristiwa statik
Jika MyFunction adalah statik, ia tidak memegang rujukan kepada contoh. Oleh itu, penggunaan kaedah statik untuk melanggan insiden tidak akan menghalang kitar semula sampah objek sasaran.
Prosedur pemprosesan acara berasaskan enterprise
Jika myFunction adalah kaedah contoh, permohonan itu mengandungi rujukan kepada contoh. Ini bermakna penggunaan kaedah berasaskan contoh untuk melanggan peristiwa akan menghalang objek sasaran daripada dikitar semula oleh sampah. Walau bagaimanapun, sebaik sahaja objek penerbitan (PCLAS dalam contoh ini) memenuhi syarat pengumpulan, masalah ini tidak lagi wujud.
<:> NOTA:
Hubungan antara pelanggan insiden dan kitar semula sampah adalah satu. Jika PCLASS melanggan peristiwa yang diproses oleh kaedah berasaskan contoh, PCLASS akan menyimpan objek sasaran. Walau bagaimanapun, jika objek sasaran melanggan acara yang diterbitkan oleh PCLASS, PCLASS tidak akan menyimpan objek sasaran dalam aktiviti.Batalkan pemulihan sampah langganan untuk objek kitaran hayat panjang
Jika pClass adalah kitaran hayat yang panjang dan masa kediaman ingatannya lebih panjang daripada contoh dengan MyFunction, ia boleh menghalang contoh sasaran daripada dikitar semula oleh sampah. Dalam kes ini, acara langganan perlu dibatalkan selepas diproses untuk membolehkan objek sasaran.
Oleh itu, prosedur pemprosesan peristiwa tidak akan menghalang pemulihan sampah objek penerbitan. Walau bagaimanapun, adalah perlu untuk mempertimbangkan sama ada jenis prosedur pemprosesan peristiwa (statik atau contoh -berasaskan) dan sama ada objek langganan adalah kitaran hayat yang panjang.Atas ialah kandungan terperinci Adakah pengendali acara menghalang pengumpulan sampah objek penerbitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!