jump to navigation

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: (lebih…)

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. (lebih…)

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. (lebih…)

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: (lebih…)

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 (lebih…)

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. (lebih…)

Mengalokasikan Resource dari Managed Heap – Bagian 02 16 Mei 2008

Posted by firstyuyu in Garbage Collector.
add a comment

Sekarang mari coba kita lihat bagaimana heap bahasa C mengalokasikan memori. Pada heap milik C, alokasi memori untuk sebuah obyek mengharuskan kita untuk menelusuri sebuah linked list. Ketika sebuah blok kosong yang cukup besar ditemukan, maka blok tersebut akan dipecah, lalu pointer di dalam node linked list tersebut akan dimodifikasi untuk mengakomodasi blok yang kita pecah tadi. Pada managed heap, alokasi sebuah obyek hanya cukup dengan memberi nilai ke sebuah pointer (ini tentu sangat cepat). Sebenarnya, alokasi sebuah obyek di managed heap hampir secepat alokasi memori di stack! (lebih…)

Mengalokasikan Resource dari Managed Heap – Bagian 01 16 Mei 2008

Posted by firstyuyu in Garbage Collector.
add a comment

CLR mewajibkan bahwa semua resource harus dialokasikan dari heap yang disebut managed heap. Heap ini mirip dengan heap milik runtime bahasa C. Hanya saja kita tidak akan pernah menghapus obyek secara eksplisit dari managed heap karena obyek akan otomatis dihapus oleh garbage collector ketika aplikasi sudah tidak memerlukannya lagi. Hal ini tentu menimbulkan pertanyaan, “Bagaimana managed heap tahu kapan sebuah aplikasi sudah tidak memerlukan obyek tersebut?”. Pertanyaan inilah yang akan kita bahas disini. (lebih…)

Garbage Collector – Pengantar 16 Mei 2008

Posted by firstyuyu in Garbage Collector.
add a comment

Setiap program pasti akan menggunakan resource selama eksekusinya, baik itu berupa file, buffer memory, layar, koneksi jaringan, resource database, dll. Sebenarnya, dalam lingkungan object-oriented, setiap tipe data mengidentifikasikan resource yang digunakan oleh program. Untuk menggunakan sebuah resource, kita membutuhkan alokasi memori. Langkah-langkah berikut akan dilakukan setiap kali kita menggunakan sebuah resource: (lebih…)

Hindari Property yang Mengembalikan Array 16 Mei 2008

Posted by firstyuyu in Misc.
2 comments

Property yang mengembalikan array bisa sangat membingungkan. Pada umumnya, kita harus mengembalikan salinan dari array internal sehingga developer tidak bisa merubah state internal yang ada. Hal ini bisa membawa kita kepada kode yang tidak efisien. (lebih…)