Garbage collection and Finalize() method
By: aathishankaran
Garbage collection
Since objects are dynamically allocated by using the new operator, you might be wondering how such objects are destroyed and their memory released for later reallocation. In some languages, such as C++, dynamically allocated objects must be manually released by use of a delete operator.
Java takes a different approach; it handles deallocation for you automatically. The technique that accomplishes this is called garbage collection. It works like this: when no references to an object to an object exist, that object is assumed to be no longer needed, and the memory occupied by the object can be reclaimed. There is no explicit need to destroy objects as in C++. Garbage collection only occurs sporadically (if at all) during the execution of your program. It will not occur simply because one or more objects exist that are no longer used. Furthermore, different java run-time implementations will take varying approaches to garbage collection, but for the most part, you should not have to think about it while writing your programs
The finalize () Method
Sometimes an object will need to perform some action when it is destroyed. For example, if an object is holding some non-java resource such as a file handle or window character font, then you might want to make sure these resources are freed before an object is destroyed. To handle such situations, java provides a mechanism called finalization. By using finalization, you can define specific actions that will occur when an object is just about to be reclaimed by the garbage collector.
To add a finalizer to a class, you simply define the finalize() method. The java run time calls that method whenever it is about to recycle an object of that class. Inside the finalize() method you will specify those actions that must be performed before an object is destroyed. The garbage collector runs periodically, checking for objects that are no longer referenced by any running state or indirectly through other referenced objects. Right before an asset is freed, the java run time calls the finalize() method on the object.
The finalize() method has this general form:
protected void finalize()
{
// finalization code here
}
Here, the keyword protected is a specifier that prevents access to finalize() by code defined outside its class.
It is important to understand that finalize() is only called just prior to garbage collection. It is not called when an object goes out-of-scope, for example. This means program should provide other means of releasing system resources, etc., used by the object. It must not rely on finalize() for normal program operation.
Archived Comments
1. Heya! I realize this is somewhat off-topic however I had to ask.
Does building a well-establi
View Tutorial By: wordpress website templates at 2017-06-12 17:14:31
2. Very clear and instructive. Better than other explanation I found in documents and Javadoc. Thanks v
View Tutorial By: cembircan at 2015-06-10 15:45:01
3. In the above example..where you make the GC1 objects to null before calling the gc() method....?
View Tutorial By: prasad at 2014-12-11 11:14:27
4. In the above example..where you make the GC1 objects to null before calling the gc() method....?
View Tutorial By: prasad at 2014-12-11 11:12:28
5. Thanks nice answer…if anybody wants to know the interview questions with answers
View Tutorial By: Anil Nivargi at 2014-07-04 17:39:23
6. Clear explaination..Thank You Sir...
View Tutorial By: nishanth at 2014-06-16 08:58:04
7. Thanks for the great example.
I've coded it to do some testing. I'm not sure if Syst
View Tutorial By: Chris at 2013-10-05 13:41:44
8. Very informative and simple to understand. Thank you
View Tutorial By: Rosa Vladivord at 2012-12-23 13:00:52
9. I have also done some analysis and found this method very unpredictable. Its execution is not guaran
View Tutorial By: [email protected] Never use finalize at 2012-11-01 04:01:04
10. write up of this article copy pasted word to word from:
Java Complete Reference by Herbert Sc
View Tutorial By: Sj at 2012-09-13 13:41:09
11. informative article.......
View Tutorial By: Nithin at 2012-08-17 15:32:37
12. very good example.....................
View Tutorial By: sreeLakshmi at 2012-06-15 08:21:12
13. Is System.gc() required with finalize method??
View Tutorial By: QsRealm at 2012-02-11 08:28:16
14. hey...its copied from JAVA2 THE COMPLETE REFERENCE i need few more example ........
View Tutorial By: ahamed halima at 2011-11-14 17:29:26
15. Gan,
Above print is not working because your object has not been garbage collected.If
View Tutorial By: Amit at 2011-07-25 05:26:47
16. protected void finalize() {
System.out.println("It's will not print. Why?");
View Tutorial By: Gan at 2011-07-11 12:08:24
17. please give some simple examples for better understanding....
View Tutorial By: Priya at 2011-03-04 20:36:20
18. Better theory for those who have just started.
But you should also give some example to illus
View Tutorial By: kunal at 2010-05-13 05:55:05
19. /** Example shows garbage collector in action
Note that the finalize() method of object G
View Tutorial By: sreekar at 2010-05-08 07:58:09
Comment on this tutorial
- Data Science
- Android
- AJAX
- ASP.net
- C
- C++
- C#
- Cocoa
- Cloud Computing
- HTML5
- Java
- Javascript
- JSF
- JSP
- J2ME
- Java Beans
- EJB
- JDBC
- Linux
- Mac OS X
- iPhone
- MySQL
- Office 365
- Perl
- PHP
- Python
- Ruby
- VB.net
- Hibernate
- Struts
- SAP
- Trends
- Tech Reviews
- WebServices
- XML
- Certification
- Interview
categories
Related Tutorials
Program using concept of byte long short and int in java
Update contents of a file within a jar file
Tomcat and httpd configured in port 8080 and 80
Count number of vowels, consonants and digits in a String in Java
Student marks calculation program in Java
Calculate gross salary in Java
Calculate average sale of the week in Java
Vector in Java - Sample Program
MultiLevel Inheritance sample in Java