An
object which is not strongly reachable and and can be accessed
through a soft reference is called softly reachable object. All the
soft reachable objects will be cleared before JVM throws
OutOfMemoryError. In simple terms, Garbage collector clears the
Softly reachable objects when memory is needed.
Whenever
Garbage collector runs, if it finds an Weakly reachable object, then
it clears the memory immediately. It is not the case with softly
reachable object, it may or may not clears the softly reachable
object. Whether
the softly rachable object is freed depends on the algorithm of the
garbage collector as well as the amount of memory available while the
collector is running.
Garbage
Collector interaction with Soft reachable object
If
Garbage collector wants to free memory of softly reachable object,
then
- The soft reference object referent field is set to null.
- The heap object referenced by the SoftReference is declared finalizable.
- When the heap object's finalize() method is run and its memory freed, the SoftReferenceobject is added to its ReferenceQueue, if it exists.
Creating
a SoftReference
SoftReferences
are created by passing an object to SoftReference's constructor:
Object
obj = new Object();
SoftReference
softRef = new SoftReference(obj);
Related
Links
No comments:
Post a Comment