Saturday, June 14, 2014

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

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts