Tất cả các vấn đề trong khoa học máy tính có thể được giải quyết bằng một cấp độ khác của cảm ứng ngoại trừ vấn đề có quá nhiều lớp không xác định
Cách tiếp cận của bạn không giải quyết ngay vấn đề thu gom rác mà chỉ đưa nó lên một cấp. Và với giá nào! Bây giờ, mọi truy cập bộ nhớ đều đi qua một sự bổ sung con trỏ khác. Chúng tôi không thể lưu trữ vị trí kết quả, vì có thể nó đã được di chuyển trong khi đó, chúng tôi phải luôn đi qua ID đối tượng. Trong hầu hết các hệ thống, sự gián tiếp này không được chấp nhận và việc dừng thế giới được cho là có tổng chi phí thời gian chạy thấp hơn.
Tôi nói đề xuất của bạn chỉ di chuyển vấn đề, không giải quyết nó. Vấn đề xoay quanh việc tái sử dụng ID đối tượng. ID đối tượng hiện tương đương với con trỏ của chúng tôi và chỉ có một lượng địa chỉ hữu hạn. Có thể hiểu được (đặc biệt trên hệ thống 32 bit) rằng trong suốt thời gian tồn tại của chương trình của bạn, nhiều hơn các đối tượng INT_MAX sẽ được tạo, ví dụ như trong một vòng lặp như
while (true) {
Object garbage = new Object();
}
Nếu chúng ta chỉ tăng ID đối tượng cho từng đối tượng, chúng ta sẽ hết ID tại một số điểm. Do đó, chúng tôi phải tìm ra ID nào vẫn đang được sử dụng và miễn phí để có thể lấy lại được. Nghe có vẻ quen? Bây giờ chúng tôi đã trở lại tại một hình vuông.