Alasan Menghindari Penggunaan Finalization 21 Mei 2008
Posted by firstyuyu in Garbage Collector.add a comment
Ketika mendesain sebuah tipe data, sangat disarankan untuk sebisa mungkin menghindari penggunaan method Finalize karena beberapa alasan berikut: (lagi…)
Menggunakan Finalization untuk Membebaskan Native Resource 21 Mei 2008
Posted by firstyuyu in Garbage Collector.add a comment
Setelah membaca artikel-artikel sebelumnya tentang garbage collector, tentu sekarang Anda sudah memahami mengenai prinsip dasar garbage collector dan managed heap. Untungnya, sebagian besar tipe data di .net framework hanya membutuhkan alokasi memori untuk menjalankan tugasnya. Misalnya, tipe data seperti String, Attribute, Delegate, dan Exception hanya sekedar memanipulasi byte yang ada di memori. Namun, beberapa tipe data membutuhkan lebih dari sekedar alokasi memori. Beberapa tipe data ada yang membutuhkan native resource selain alokasi memori. (lagi…)
Pengaruh Garbage Collector dalam Proses Debugging – Bagian 02 21 Mei 2008
Posted by firstyuyu in Garbage Collector.add a comment
Ketika JIT compiler meng-compile sebuah method, ia akan memeriksa apakah assembly tempat method tersebut berada mempunyai atribut System.Diagnostic.DebuggableAttribute dan parameter isJITOptimizerDisabled pada konstruktornya diset dengan nilai true. Jika ya, maka ia akan menambah masa hidup semua variabel lokal hingga akhir method. Ketika kita menambahkan compiler option
/debug+, compiler C# akan menambahkan atribut tersebut pada assembly yang dihasilkan. Perhatikan, compiler option
/optimize+ akan mengaktifkan optimisasi sehingga jangan menggunakannya pada percobaan ini. (lagi…)
Pengaruh Garbage Collector dalam Proses Debugging – Bagian 01 21 Mei 2008
Posted by firstyuyu in Garbage Collector.1 comment so far
Segera setelah sebuah obyek tidak dapat dicapai lagi (tidak ada referensi satupun yang merujuk ke dia), maka ia menjadi kandidat untuk dibersihkan oleh garbage collector. Karena itu, kita tidak bisa menjamin masa hidup sebuah obyek dengan pasti. Sebuah obyek yang diinstansiasi secara lokal di dalam sebuah method, belum tentu masa hidupnya sama dengan masa hidup method tersebut. Jika di tengah-tengah method sebuah obyek sudah tidak digunakan lagi, maka mungkin saja garbage collector akan membersihkan obyek tersebut bahkan sebelum eksekusi methodnya selesai. Hal ini mempunyai dampak yang cukup menarik bagi aplikasi yang kita buat. Sebagai contoh, perhatikan kode berikut: (lagi…)
Algoritma Garbage Collector – Bagian 02 21 Mei 2008
Posted by firstyuyu in Garbage Collector.add a comment
Ketika garbage collector mulai dijalankan, ia mengasumsikan bahwa semua obyek yang berada di managed heap merupakan sampah yang harus dibersihkan. Lalu garbage collector akan memulai sebuah fase penandaan (marking). Hal ini dilakukan dengan menelusuri thread stack untuk mencari root yang ada. Jika sebuah root ditemukan, maka (lagi…)
Algoritma Garbage Collector – Bagian 01 21 Mei 2008
Posted by firstyuyu in Garbage Collector.add a comment
Garbage collector akan melakukan pengecekan apakah ada obyek yang tidak lagi digunakan di dalam managed heap. Jika memang ada, maka memori yang digunakan oleh obyek-obyek ini akan dibebaskan. Jika tidak ada lagi memori yang tersisa setelah garbage collector bekerja (heap penuh dan tidak ada obyek yang tidak digunakan) maka operator new akan melemparkan OutOfMemoryException. Bagaimana garbage collector bisa mengetahui apakah sebuah obyek sedang digunakan oleh aplikasi atau tidak? Ini bukanlah pertanyaan yang mudah untuk dijawab. (lagi…)
