Types of References in Java
Types of References in Java
In Java there are four types of references differentiated on the way by which they are garbage collected.
- Strong References
- Weak References
- Soft References
- Phantom References
- Strong References: This is the default type/class of Reference Object. Any object which has an active strong reference are not eligible for garbage collection. The object is garbage collected only when the variable which was strongly referenced points to null.
MyClass obj = new MyClass ();
Here ‘obj’ object is strong reference to newly created instance of MyClass, currently obj is active object so can’t be garbage collected.obj = null; //'obj' object is no longer referencing to the instance. So the 'MyClass type object is now available for garbage collection.
- Weak References: Weak Reference Objects are not the default type/class of Reference Object and they should be explicitly specified while using them.
- This type of reference is used in WeakHashMap to reference the entry objects .
- If JVM detects an object with only weak references (i.e. no strong or soft references linked to any object object), this object will be marked for garbage collection.
- To create such references java.lang.ref.WeakReference class is used.
- These references are used in real time applications while establishing a DBConnection which might be cleaned up by Garbage Collector when the application using the database gets closed.
Output:GeeksforGeeks GeeksforGeeks
Two different levels of weakness can be enlisted: Soft and Phantom
- Soft References: In Soft reference, even if the object is free for garbage collection then also its not garbage collected, until JVM is in need of memory badly.The objects gets cleared from the memory when JVM runs out of memory.To create such references java.lang.ref.SoftReference class is used.Output:
GeeksforGeeks GeeksforGeeks
- Phantom References: The objects which are being referenced by phantom references are eligible for garbage collection. But, before removing them from the memory, JVM puts them in a queue called ‘reference queue’ . They are put in a reference queue after calling finalize() method on them.To create such references java.lang.ref.PhantomReference class is used.Runtime Error:
Exception in thread "main" java.lang.NullPointerException at Example.main(Example.java:31)
Output:GeeksforGeeks
Comments
Post a Comment