Semua masalah dalam ilmu komputer dapat diselesaikan dengan tingkat tipuan yang lain ... kecuali untuk masalah terlalu banyak lapisan tipuan
Pendekatan Anda tidak segera menyelesaikan masalah pengumpulan sampah, tetapi hanya memindahkannya satu tingkat. Dan berapa biayanya! Sekarang, setiap akses memori melewati dereference pointer lain. Kami tidak dapat men-cache lokasi hasil, karena itu mungkin telah dipindahkan sementara itu, kami harus selalu melalui ID objek. Dalam kebanyakan sistem, tipuan ini tidak dapat diterima, dan menghentikan dunia diasumsikan memiliki total biaya runtime yang lebih rendah.
Saya mengatakan proposisi Anda hanya menggerakkan masalah, bukan menyelesaikannya. Masalahnya adalah sekitar penggunaan kembali ID objek. ID objek sekarang setara dengan pointer kami, dan hanya ada jumlah alamat yang terbatas. Dapat dibayangkan (khususnya pada sistem 32 bit) bahwa selama masa hidup program Anda, lebih dari objek INT_MAX akan dibuat, misalnya dalam satu lingkaran seperti
while (true) {
Object garbage = new Object();
}
Jika kami hanya menambah ID objek untuk setiap objek, kami akan kehabisan ID di beberapa titik. Oleh karena itu kita harus mencari tahu ID mana yang masih digunakan dan yang gratis sehingga dapat direklamasi. Terdengar akrab? Kami sekarang kembali di titik awal.