Author
Java provides four types of references, each defining how the Garbage Collector treats an object. These reference types help developers optimize memory usage, caching, and cleanup operations.

This is the normal reference type used in Java.
String name = new String("Java");
Use Case:
All regular object usage.
Soft references are cleared only when JVM is low on memory.
SoftReference<String> softRef =
new SoftReference<>(new String("Data"));
Key Points:
Use Cases:
Objects referenced only through weak references are removed in the next GC cycle.
WeakReference<String> weakRef =
new WeakReference<>(new String("Hello"));
Key Points:
Use Cases:
Phantom references are used to track when an object has been collected.
ReferenceQueue<Object> queue = new ReferenceQueue<>();
PhantomReference<Object> phantomRef =
new PhantomReference<>(new Object(), queue);
Key Points:
Use Cases:
| Reference Type | Collected by GC? | When Collected | Common Use Case |
|---|---|---|---|
| Strong | No | Never (until reference removed) | Normal object usage |
| Soft | Yes | Low memory | Caching |
| Weak | Yes | Immediately on GC | WeakHashMap |
| Phantom | Yes (but tracked) | After finalization | Cleanup + native resources |