Perbezaan antara melupuskan dan memuktamadkan
- 2675
- 349
- Mrs. Tomas Champlin
Dalam bahasa pengaturcaraan, objek hanya boleh berubah semasa kewujudannya, setelah instantiasi tidak dapat diubah suai. Begitu sel ingatan yang sama tidak dapat diperuntukkan kepada nilai -nilai baru, oleh itu semacam pengurusan memori automatik diperlukan untuk menguruskan ruang yang tidak digunakan. Ruang yang tidak digunakan ini dipanggil sampah dan keseluruhan proses pengurusan ingatan yang cekap dipanggil koleksi sampah.
Objektif utama pemungut sampah adalah untuk memisahkan objek mati dari objek langsung dan menuntut semula ruang untuk digunakan semula. Pada asasnya, semuanya berfungsi pada timbunan yang diuruskan, yang hanyalah blok memori dan pemungut sampah secara berkala memeriksa memori timbunan untuk memperuntukkan memori ke objek baru. Terdapat dua kaedah untuk melepaskan sumber yang tidak dikendalikan seperti fail dan sambungan pangkalan data: Buang dan memuktamadkan.
Artikel ini membantu anda memahami perbezaan antara keduanya.
Apakah kaedah pelupusan?
Buang adalah cara standard bagi pengguna untuk memberitahu objek untuk melepaskan sumber mereka dan tidak cuba mengakses objek lagi. Kaedah pelupusan memberikan kawalan pembersihan memori eksplisit dengan memberikan objek yang tidak dapat digunakan.
Apabila pengguna memanggil kaedah pelupusan (), objek sepatutnya membebaskan semua sumber mahalnya sehingga menjadikannya tersedia untuk digunakan semula. Ia tidak pernah dipanggil oleh pemungut sampah yang hanya dimainkan ketika memori yang diuruskan menjadi langka. Antara muka khas yang dipanggil "Idisposable" digunakan untuk menentukan di mana dan bagaimana untuk melaksanakan pelupusan (). Tetapi apa yang berlaku apabila kaedah pelupusan tidak dipanggil?
Apa itu kaedah pemuktamadan?
Sekiranya kaedah pelupusan tidak dipanggil, pelan sandaran adalah menggunakan kaedah akhir () untuk pembersihan. Ia dipanggil oleh pemungut sampah untuk melakukan pembersihan sumber akhir sebelum membebaskan memori. Konsep pembersihan yang tepat pada masanya menjadi tidak dapat digunakan di sini kerana bukannya menghilangkan memori dengan segera, objek itu ditambah ke barisan akhir hanya untuk dimusnahkan kemudian. Memuktamadkan lebih seperti perlindungan yang disediakan sekiranya berlaku kesilapan pengaturcaraan dan pelupusan tidak membersihkan sumber -sumber yang mana kaedah akhir () dipanggil oleh pemungut sampah untuk menghapuskan objek yang tidak dapat dicapai dalam urutan apa pun yang disukainya.
Perbezaan antara melupuskan dan memuktamadkan
Asas -asas membuang dan memuktamadkan
Buang kaedah dipanggil untuk mempercepat pembebasan sumber yang tidak diurus seperti pemegang pangkalan data, pemegang fail, semaphores, dan objek lain yang diperuntukkan oleh sistem pengendalian. Kaedah pelupusan digunakan untuk melaksanakan kod yang diperlukan untuk membersihkan memori yang tidak digunakan dan sumber yang terhad seperti pemegang GDI. Secara ringkas, jejak kaedah menyediakan kawalan pembersihan memori eksplisit. Kaedah akhir, sebaliknya, adalah sebahagian daripada koleksi sampah yang digunakan untuk melakukan operasi pembersihan akhir pada objek sebelum ia menjadi sampah yang dikumpulkan. Ringkasnya, memuktamadkan kaedah dipanggil untuk membebaskan sumber yang tidak dikendalikan yang dipegang oleh objek sebelum dimusnahkan.
Memohon membuang dan memuktamadkan
Buang kaedah boleh dipanggil secara eksplisit oleh kod pengguna dan kelas yang melaksanakan kaedah untuk membuang sumber. Walau bagaimanapun, ingatan tidak dapat dikeluarkan sehingga pemungut sampah melakukan proses pembersihan. Kaedah ini boleh dipanggil walaupun rujukan lain ke objek masih wujud. Kaedah akhir, sebaliknya, boleh dipanggil oleh pemungut sampah hanya selepas ia menentukan bahawa contoh objek memori terakhir dimusnahkan dan tidak ada lagi rujukan kepada objek yang ada. Selepas kaedah pemuktsan dilaksanakan, objek dikeluarkan dari memori timbunan.
Pelaksanaan pelupusan dan memuktamadkan
Proses melupuskan objek dari ingatan dipanggil corak pelupusan, yang boleh digunakan untuk objek yang mengakses sumber yang tidak diurus kerana pemungut sampah tidak dapat menuntut semula sumber yang tidak diurus. Antara muka "idisposable" bersama -sama dengan kaedah pelupusan tambahan (boolean) dilaksanakan meminta pembebasan sumber yang tidak dikendalikan. Kaedah akhir dilaksanakan apabila contoh sesuatu objek dimusnahkan sebelum penangguhannya. Ia adalah kaedah bukan deterministik yang berlaku mengikut budi bicara pemungut sampah dan mungkin tidak berlaku. Ia tidak boleh dilaksanakan pada objek yang diuruskan sehingga sangat diperlukan.
Prestasi pelupusan dan memuktamadkan
Lebih cepat menggunakan kaedah pelupusan dan bukannya memuktamadkan untuk melupuskan objek segera. Destructors secara automatik ditukar untuk memuktamadkan kaedah semasa runtime. Ia secara automatik dipanggil oleh pemungut sampah apabila objek keluar dari skop, yang biasanya berlaku apabila contoh objek itu dimusnahkan. Masalah dengan kaedah akhir adalah bahawa ia bukan makministik makna tidak pasti bila untuk menuntut semula memori yang tidak lagi dirujuk melalui koleksi sampah. Walau bagaimanapun, ia tidak boleh memori percuma dengan segera; Sebenarnya, ia tidak boleh dipanggil dan ia tidak boleh dipaksa secara eksplisit.
Buang vs. Memuktamadkan: Carta Perbandingan
Ringkasan pelupusan vs memuktamadkan
Perbezaan utama antara membuang dan memuktamadkan kaedah adalah bahawa bekas adalah kaedah deterministik yang dengan serta-merta membuang objek apabila mereka tidak lagi digunakan, sementara yang terakhir adalah kaedah yang tidak ditentukan untuk memperuntukkan sumber yang tidak diurus yang bermaksud ia adalah kaedah backstop untuk membebaskan contoh objek memori ketika mereka keluar dari ruang lingkup sebelum penangguhan mereka. Selalu dinasihatkan untuk menggunakan kaedah pelupusan untuk menyelesaikannya kecuali sangat diperlukan.
Dalam istilah lain, pemuktsan adalah perlindungan yang diletakkan untuk membersihkan sumber yang tidak dikendalikan apabila membuang kaedah tidak dapat dipanggil sekiranya berlaku beberapa ralat pengaturcaraan. Memuktamadkan kaedah dipanggil oleh pemungut sampah apabila objek hendak ditendang keluar dari ingatan timbunan.