Ada BANYAK yang bisa dikatakan dalam meluangkan waktu untuk menguji berbagai pengaturan pengumpulan sampah, tetapi seperti yang disebutkan di atas biasanya tidak berguna untuk melakukannya.
Saat ini saya mengerjakan proyek yang melibatkan lingkungan terbatas memori dan jumlah data yang relatif besar - ada beberapa bagian besar data yang mendorong lingkungan saya ke batasnya, dan meskipun saya dapat menurunkan penggunaan memori begitu bahwa secara teori seharusnya berfungsi dengan baik, saya masih akan mendapatkan error ruang heap --- opsi GC yang bertele-tele menunjukkan kepada saya bahwa ia mencoba mengumpulkan sampah, tetapi tidak berhasil. Dalam debugger, saya dapat menjalankan System.gc () dan cukup yakin akan ada "banyak" memori yang tersedia ... tidak banyak tambahan, tetapi cukup.
Akibatnya, satu-satunya saat aplikasi saya memanggil System.gc () adalah ketika akan memasuki segmen kode di mana buffer besar yang diperlukan untuk memproses data akan dialokasikan, dan pengujian pada memori bebas yang tersedia menunjukkan bahwa saya tidak dijamin memilikinya. Secara khusus, saya melihat lingkungan 1gb di mana setidaknya 300mb ditempati oleh data statis, dengan sebagian besar data non-statis terkait dengan eksekusi kecuali ketika data yang sedang diproses setidaknya berukuran 100-200 MB pada sumber. Itu semua adalah bagian dari proses konversi data otomatis, jadi semua data ada untuk jangka waktu yang relatif singkat dalam jangka panjang.
Sayangnya, meskipun informasi tentang berbagai opsi untuk menyetel pengumpul sampah tersedia, tampaknya sebagian besar merupakan proses eksperimental dan tingkat spesifik yang lebih rendah diperlukan untuk memahami cara menangani situasi khusus ini tidak mudah diperoleh.
Semua itu dikatakan, meskipun saya menggunakan System.gc (), saya masih terus menyetel menggunakan parameter baris perintah dan berhasil meningkatkan waktu pemrosesan keseluruhan aplikasi saya dengan jumlah yang relatif signifikan, meskipun tidak dapat mengatasi batu sandungan yang ditimbulkan dengan bekerja dengan blok data yang lebih besar. Karena itu, System.gc () adalah alat .... alat yang sangat tidak dapat diandalkan, dan jika Anda tidak berhati-hati dengan cara menggunakannya, Anda akan berharap alat itu tidak berfungsi lebih sering daripada tidak.