Difference Between Soft, Weak And Phantom References In Java



  • As we know that the garbage collector facilitates automatically garbage-collection in java.
  • Garbage collector determines when no references exist to an object, Then object is assumed to be no longer needed and its memory is reclaimed.
  • Now if you need more flexible control over the garbage collection process, Java provides very useful classes for that in java.lang.ref package.
Soft ReferencesWeak ReferencesPhantom References
Soft references  - Inhibits collection until memory runs short. Weak references provide access to an object without preventing it from being freed.Phantom references used for cleanup when objects are freed.
Java soft references provide a mechanism to use all available memory as cache And It would be freed only when the system needs the additional resources.Weak references only get collected if no other object references it except the weak references.A phantom reference will be finalized but the memory will not be reclaimed, Phantom reference can be useful when you want to be notified that an object is about to be collected.
Garbage collector will attempt to free soft references before throwing an out-of-memory exception, And it will attempt to free soft references in least recently used order.Weak reference will not pin an object in to memory, In fact, An object that is identified as weakly reachable will be garbage collected at the next GC cycle.The only use for phantom reference is keeping track of when object gets enqueued into a ReferenceQueue, As at that point of time you'll know that the object to which it pointed is dead.
Application of soft refences :
1. Cache memory implementation
2. To avoid / resolve memory leak
Application of Weak references:
1. Weak references are used inside WeakHashMap class implementation for storing keys.
Application of phantom references :
1. It's used for scheduling pre-mortem cleanup actions in a more flexible way than is possible with the Java finalization mechanism.
Read full article from Difference Between Soft, Weak And Phantom References In Java

No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts