troubleshooting Question

How does weak Reference work in Java

Avatar of Rohit Bajaj
Rohit BajajFlag for India asked on
Java
5 Comments1 Solution166 ViewsLast Modified:
Hi,
I have the following code :

public class Test {
  
  public static void main(String[] args) throws InterruptedException {
  
      String s = "test";
    
    WeakReference<String> s2 = new WeakReference<String>("test");
       
 s = null;
     
   System.gc();
        
Thread.sleep(1000);
      
  System.out.println(s2.get());


  
  }

}
Here i tried to create a weakReference to the same string object..
And then set the strong reference to null.. and ran gc... Waited for garbage collector to run and clear all weakReferences...
But still i see s2.get() returning "test" ?? how is that possible...
Why doesnt garbage collector set the value in s2 as null.
What i understand is since the string "test" now does not have any strong reference to it.. It will be Garbage collected .

Thanks
ASKER CERTIFIED SOLUTION
Join our community to see this answer!
Unlock 1 Answer and 5 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 5 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros