Mengelakkan Kebocoran Memori: Bila Perlu Menutup MemoryStream dalam .NET
Pembangun sering menghadapi soalan mengenai keperluan menutup MemoryStream dalam .NET secara manual kod. Untuk menangani perkara ini, pertimbangkan senario berikut:
MemoryStream foo() { MemoryStream ms = new MemoryStream(); // Write data to ms return ms; } void bar() { MemoryStream ms2 = foo(); // Process ms2 data return; }
Adakah kod ini menimbulkan risiko kebocoran memori dengan MemoryStream yang diperuntukkan?
Jawapan:
Mengikut pelaksanaan semasa, tiada risiko kebocoran memori dalam kod yang disediakan. Memanggil Buang pada MemoryStream tidak akan mempercepatkan pembersihan memori. Walau bagaimanapun, ia menghalang strim daripada digunakan semula untuk membaca atau menulis selepas panggilan.
Melupuskan MemoryStream mungkin tidak perlu jika terdapat kepastian mutlak bahawa ia tidak akan ditukar kepada jenis strim yang berbeza. Walau bagaimanapun, secara amnya adalah dinasihatkan untuk melupuskan atas dua sebab:
Oleh itu, walaupun kod semasa tidak mencipta kebocoran memori, melupuskan MemoryStream masih disyorkan sebagai amalan yang baik dan untuk mengelakkan isu yang berpotensi pada masa hadapan.
Atas ialah kandungan terperinci Perlukah Saya Membuang MemoryStream dalam .NET untuk Mengelakkan Kebocoran Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!