December 18, 2015

WeakReference and WeakHashMap in Java

Weak Reference :
An Object will not be garbage collected if one or more reference exits. This is not true always if the references are Weak Reference then its a valid candidate of Garbage Collection.

four types of references in Java i.e. strong reference, soft reference, weak reference and phantom reference. We will discuss about these references later.

Lets start with an example to understand Weak Reference.
Suppose you have a requirement to store current Active visitors with the entry time.

Now you can see v1 left but the entry still exist in HashMap. So it shouldn’t exist in the Map and v1 should get garbage collected but this will not because its a strong reference.

The output to above program will be

Where as if you change the HashMap to WeakHashMap(Predefined Map which uses weak reference.there is a private method name expungeStaleEntries(), which is used to remove stale entries as given in above example and this method is used in all exposed methods of WeakHashMap) .

Note :System.gc() is a request not a command but by JVM respects my request 🙂


The output will be as below

So you can use WeakHashMap whenever entries are no more used. Bit of google will help to understand it better.

You may also like...

1 Response

  1. makaveli says:

    best explanation about the topic.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.