Programmer C# tidak mengelola memori secara manual, tetapi memahami apa yang terjadi di balik layar membuat kode lebih efisien dan bebas kejebakan. Section ini membahas memori dari sudut pandang runtime: di mana data diletakkan, bagaimana objek dialokasikan, dan kapan ruang memori diklaim kembali.
Kenali dua area memori utama runtime .NET, yaitu call stack untuk data sementara dan managed heap untuk objek yang dikelola garbage collector.
Buka → # Value dan Reference SemanticsPahami perbedaan semantik nilai dan semantik referensi di C# serta dampaknya terhadap alokasi memori dan perilaku program.
Buka → # Object AllocationLihat bagaimana operator new mengalokasikan objek di managed heap dan cara mengukur jumlah byte yang dialokasikan dengan GC.GetAllocatedBytesForCurrentThread.
Buka → # Reference LifetimePelajari bagaimana usia objek ditentukan oleh rujukan yang masih terpakai dan bagaimana GC mengklaim kembali objek tanpa rujukan.
Buka → # Garbage CollectionKenali cara garbage collector menemukan objek tanpa rujukan dan mengklaim kembali memorinya, lengkap dengan pengukuran hitungan koleksi.
Buka → # Large Object HeapPelajari Large Object Heap (LOH), area khusus di managed heap untuk objek berukuran 85.000 byte ke atas, beserta implikasinya.
Buka → # Generations dan GCPahami konsep generasi 0, 1, dan 2 pada garbage collector .NET serta proses promosi objek yang selamat dari siklus GC.
Buka → # FinalizerPelajari finalizer sebagai jaring pengaman terakhir runtime, beserta keterbatasannya yang serius pada waktu eksekusi dan beban GC.
Buka → # WeakReferenceGunakan WeakReference untuk merujuk objek tanpa menahannya dari pengklaiman GC, misalnya pada cache yang boleh dibuang kapan saja.
Buka → # Memory PressureUkur tekanan memori dari laju alokasi managed dan informasikan pemakaian memori unmanaged kepada GC melalui GC.AddMemoryPressure.
Buka → # Allocation ReductionTeknik menekan jumlah alokasi managed: StringBuilder untuk penyambungan, span dan MemoryExtensions untuk pemrosesan tanpa alokasi.
Buka → # Memory Management Best PracticesRangkum praktik terbaik pengelolaan memori di C#: ukur dulu, andalkan using untuk resource, dan jaga rujukan agar tetap ramping.
Buka →