GC.RemoveMemoryPressure(Int64) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menginformasikan runtime bahwa memori yang tidak dikelola telah dirilis dan tidak perlu lagi diperhitungkan saat menjadwalkan pengumpulan sampah.
public:
static void RemoveMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void RemoveMemoryPressure(long bytesAllocated);
public static void RemoveMemoryPressure(long bytesAllocated);
[<System.Security.SecurityCritical>]
static member RemoveMemoryPressure : int64 -> unit
static member RemoveMemoryPressure : int64 -> unit
Public Shared Sub RemoveMemoryPressure (bytesAllocated As Long)
Parameter
- bytesAllocated
- Int64
Jumlah memori tidak terkelola yang telah dirilis.
- Atribut
Pengecualian
bytesAllocated kurang dari atau sama dengan 0.
-atau-
Pada komputer 32-bit, bytesAllocated lebih besar dari Int32.MaxValue.
Keterangan
Pola umum untuk merilis sumber daya asli adalah melalui finalizer jenis. Jika objek terkelola menggunakan memori asli, objek tersebut dapat membebaskan memori asli tersebut di finalizernya. Pengumpul sampah hanya tahu tentang memori terkelola dan menjadwalkan pengumpulan berdasarkan pengetahuan ini. Bayangkan skenario di mana objek terkelola kecil dikaitkan dengan sejumlah besar penggunaan memori asli, dan objek terkelola ini sekarang hidup di gen2. GC gen2 mungkin tidak terjadi untuk beberapa waktu, yang berarti sejumlah besar memori asli tidak akan dirilis sampai gen2 berikutnya terjadi. Runtime menyediakan AddMemoryPressure metode dan RemoveMemoryPressure untuk membantu skenario ini. Runtime menyimpan catatan internal tentang berapa banyak tekanan memori yang ditambahkan dan dihapus API ini, dan memicu GC gen2 jika dianggap produktif. Jadi ini bukan fitur GC melainkan sesuatu yang disediakan runtime untuk memicu GC.
Metode AddMemoryPressure dan RemoveMemoryPressure meningkatkan performa hanya untuk jenis yang secara eksklusif bergantung pada finalizer untuk merilis sumber daya yang tidak dikelola. Tidak perlu menggunakan metode ini dalam jenis yang mengikuti pola pembuangan, di mana finalizer digunakan untuk membersihkan sumber daya yang tidak dikelola hanya jika konsumen jenis lupa memanggil Dispose. Untuk informasi selengkapnya tentang finalisasi objek dan pola pembuangan, lihat Membersihkan Sumber Daya yang Tidak Dikelola.
Dalam pola penggunaan paling sederhana, objek terkelola mengalokasikan memori yang tidak dikelola dalam konstruktor dan merilisnya dalam Finalize metode .
AddMemoryPressure Panggil metode setelah mengalokasikan memori yang tidak dikelola, dan panggil RemoveMemoryPressure metode setelah merilisnya.
Dalam skenario yang lebih rumit, di mana alokasi memori yang tidak dikelola berubah secara substansial selama masa pakai objek terkelola, Anda dapat memanggil AddMemoryPressure metode dan RemoveMemoryPressure untuk mengomunikasikan perubahan inkremental ini ke runtime.
Perhatian
Anda harus memastikan bahwa Anda menghapus jumlah tekanan yang Anda tambahkan dengan tepat. Gagal melakukannya dapat berdampak buruk pada performa sistem dalam aplikasi yang berjalan untuk jangka waktu yang lama.