How to prevent an object from getting garbage collected?
Are there any approaches by finalize or phantom reference or any other approaches?
I was asked this question in an interview. The interviewer suggested that finalize() can be used.
How to prevent an object from getting garbage collected?
Are there any approaches by finalize or phantom reference or any other approaches?
I was asked this question in an interview. The interviewer suggested that finalize() can be used.
We have three ways to achieve same - 1) Increasing the Heap -Eden space size . 2) Create Singleton class with Static reference . 3) Override finalize() method and never let that object dereference.
There are 3 ways to prevent an Object from Garbage Collection as following:-
Increase the Heap Size of JVM
// Xms specifies initial memory to be allocated
// and Xmx specifies maximum memory can be allocated
java -Xms1024m -Xmx4096m ClassFile
Use a SingleTon Class Object as @Tobias mentioned
public class MySingletonClass {
private static MySingletonClass uniqueInstance;
// marking constructor as private
private MySingletonClass() {
}
public static synchronized MySingletonClass getInstance() {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqInstance;
}
}
We can override finalize method. That is last method executed on an object. Hence, it will remain in memory.
// using finalize method
class MyClassNotGc{
static MyClassNotGc staticSelfObj;
pubic void finalize() {
// Putting the reference id
//Object reference saved.
//The object won't be collected by the garbage collector
staticSelfObj = this;
}
}