This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
1. Is every new call will make a new object? 2. or there will be only location reference value change? 3. WHat will happene if GC gets called?( Just a assumption that it gets activcated after first time we make the tt null)
In your example, three separate objects are created. After the third object is created, the first two would be eligible for garbage collection.
The Garbage Collector in your jvm works on its own cycle, periodically looking for eligible objects. If your program runs short of storage, the Garbage Collector will make an extra pass to try to save you from program termination. System.gc() simply asks the Garbage Collector to make a collection pass. The jvm can either do this or do nothing. The Sun doc suggests that Sun's jvm's will usually act on your request. Sun even suggests that you can run System.gc() repeatedly until no more memory is recovered.
The main reason for you to call System.gc() is to prevent garbage collection, which takes a certain amount of cpu time, from happening just when a time-critical piece of code is running. However, the execution delay from a garbage collection pass on a modern CPU is very small. System.gc() is also the basis for many exam questions, so it's good to know it even if you never need it in your work. [ October 23, 2004: Message edited by: Mike Gershman ]
Just to be explicit, the object created on line 4 is eligible for garbage collection after line 8 has finished. The object created on line 8 is eligible for garbage collection after line 11 has finished.
Piscis Babelis est parvus, flavus, et hiridicus, et est probabiliter insolitissima raritas in toto mundo.