Giữ tham chiếu. Nếu đối tượng của bạn đang được thu thập sớm, nó là một triệu chứng mà bạn có một lỗi trong việc thiết kế các ứng dụng của bạn.
Bộ thu gom rác chỉ thu thập các đối tượng không có tham chiếu trong ứng dụng của bạn. Nếu không có đối tượng nào tự nhiên tham khảo đối tượng đã thu thập, hãy tự hỏi tại sao nó phải được giữ sống.
Một ứng dụng mà bạn thường không có tham chiếu, nhưng muốn giữ một đối tượng là một singleton. Trong trường hợp này, bạn có thể sử dụng biến tĩnh. Một thi thể của một singleton sẽ trông như thế này:
public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqInstance;
}
}
Edit: Về mặt kỹ thuật, bạn có thể lưu trữ một tham chiếu ở đâu đó trong finalizer của bạn. Điều này sẽ ngăn chặn các đối tượng được thu thập cho đến khi các nhà sưu tập xác định một lần nữa rằng không có tài liệu tham khảo nhiều hơn nữa. Trình hoàn thiện sẽ chỉ được gọi nhiều nhất một lần, tuy nhiên, vì vậy bạn phải đảm bảo rằng đối tượng của bạn (bao gồm cả các siêu lớp của nó) không cần phải được hoàn thành sau bộ sưu tập đầu tiên. Tuy nhiên, tôi khuyên bạn không nên sử dụng kỹ thuật này trong các chương trình thực tế. (Nó sẽ để lại cho các đồng nghiệp như tôi la hét WTF !?;)
protected void finalize() throws Throwable {
MyObjectStore.getInstance().store(this);
super.finalize(); // questionable, but you should ensure calling it somewhere.
}
Vui lòng cung cấp một số đoạn mã –
Rahul, được bạn đạo "Vui lòng cung cấp một số đoạn mã" đối với bất cứ ai đặc biệt, hoặc là bạn có ý nghĩa để cập nhật các yêu cầu của câu hỏi của bạn? –
Hey i cập nhật ques của tôi –