Finalize is a method in Java. This finalizes () method is similar to the main method. This finalizes () method is called just before the object is garbage collected. It means the original object’s last chance to perform cleanup activities like releasing system resources, closing connections like database, file open connection, etc. The main problem with the finalize method is there is no guarantee by Java Language Specification (JLS) that will be called by garbage collector or when it will be called. Let’s consider an example that an object may wait up to an indefinite time after the object becomes eligible for garbage collection. It means before its finalize() method is called. Same way, after finalizing the method called it is no guarantee, it will be immediately collected. So there is no sense to perform critical activities inside the finalize() method. It may work in one JVM, and it may not work in other JVM at the time of development.finalize() method is available inside java.lang.Object so that it is automatically available to all the classes for overriding as Object is the classes’ base class.
How does the finalize() method work in Java?
This finalizes () method is called before an object is garbage collected, so it means we can’t call finalize() method manually just like other Java methods. finalize() method called only once by garbage collector(GC) thread.
ADVERTISEMENT Popular Course in this category FINANCIAL MODELING & VALUATION - Specialization | 51 Course Series | 30 Mock TestsStart Your Free Software Development Course
Web development, programming languages, Software testing & others
Code:
protected void finalize throws Throwable { //write some code }
The finalize() method has an empty implementation, and in our class, clean-up activities are present, then we have to override this finalize() method to define our cleanup activities.
Examples to Implement Finalize in Java
Below are some examples mentioned:
Example #1
Finalize method user overriding method example
Code:
Main.java
//creating class public class Main { //main method for run the Java application public static void main(String[] args) { //Creating String object with some content String string = new String("I am Amardeep"); //make the string reference to null for allow it for Garbage Collection string = null; // Calling gc method for Garbage Collection System.gc(); //displaying some message to the user System.out.println("\tI am in Main method"); } //We are Overriding finalize method. public void finalize() { //displaying some message to the user System.out.println("\tI am feeling that I am Overriding finalize method"); } }
Output:
Explanation: If you observe the above output, you might be surprised that you did not finalize the overriding method. If you closely observe the code that is not actual Java given overridden method, it is just like a user-created method as we know actual finalize method signature protected void finalize(). So we did not get this in the output.
Example #2
Finalize method overriding actual method example
Code:
Main.java
//creating class public class Main { //main method for run the Java application public static void main(String[] args) { //Creating Main object Main main = new Main(); //make the main reference to null for allow it for Garbage Collection main = null; // Calling gc method for Garbage Collection System.gc(); //displaying some message to the user System.out.println("\tI am Amardeep from main method"); } //We are Overriding finalize method. @Override protected void finalize() { //displaying some message to the user System.out.println("\tI am actaully Overriding now."); } }
Output:
Explanation: As we see in the above output, we finalize() method output because of overriding the actual finalize() method.
Example #3
Finalize method from finally block example
Code:
Main.java
//creating class public class Main { //main method for run the Java application public static void main(String[] args) { //Creating Main object Main main = new Main(); //make the main reference to null for allow it for Garbage Collection main = null; // Calling gc method for Garbage Collection System.gc(); //displaying some message to the user System.out.println("\tI am Amardeep from main method"); } //We are Overriding finalize method. @Override protected void finalize() throws Throwable { try{ //displaying some message to the user System.out.println("\tFinalize of Paramesh"); }catch(Throwable t){ throw t; }finally{ //displaying some message to the user System.out.println("\tCalling finalize from finally block"); super.finalize(); } } }
Output:
Example #4
Finalize method not guaranteed example
Code:
FinalizeNotGuarantee.java
//package com.finalize; public class FinalizeNotGuranteed implements Runnable { //user defined method private void getMyMethod() throws InterruptedException { //try block try { System.out.println("Hi, I am TRY"); throw new NullPointerException(); //catch block } catch (NullPointerExceptionnpe) { System.out.println("Hi, Iam CATCH"); //finally block } finally { System.out.println("Hi, I am FINALLY"); } } //overriding finalize method @Override protected void finalize() throws Throwable { System.out.println("I am kinside finalize block"); super.finalize(); } //overriding Thread run method @Override public void run() { try { getMyMethod(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { for (int i = 1; i <p><strong>Output:</strong></p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172500546577423.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Finalize in Java" ></p> <p><strong>Explanation: </strong>The above example clearly illustrates that the finalize method not always guarantee to execute.</p> <h3 id="Conclusion">Conclusion</h3> <p>Java finalizes () method is used to collect the garbage collected object. This method is called just before the GC() method is called. This method is not always guaranteed to execute.</p>
The above is the detailed content of Finalize in Java. For more information, please follow other related articles on the PHP Chinese website!

Java is platform-independent because of its "write once, run everywhere" design philosophy, which relies on Java virtual machines (JVMs) and bytecode. 1) Java code is compiled into bytecode, interpreted by the JVM or compiled on the fly locally. 2) Pay attention to library dependencies, performance differences and environment configuration. 3) Using standard libraries, cross-platform testing and version management is the best practice to ensure platform independence.

Java'splatformindependenceisnotsimple;itinvolvescomplexities.1)JVMcompatibilitymustbeensuredacrossplatforms.2)Nativelibrariesandsystemcallsneedcarefulhandling.3)Dependenciesandlibrariesrequirecross-platformcompatibility.4)Performanceoptimizationacros

Java'splatformindependencebenefitswebapplicationsbyallowingcodetorunonanysystemwithaJVM,simplifyingdeploymentandscaling.Itenables:1)easydeploymentacrossdifferentservers,2)seamlessscalingacrosscloudplatforms,and3)consistentdevelopmenttodeploymentproce

TheJVMistheruntimeenvironmentforexecutingJavabytecode,crucialforJava's"writeonce,runanywhere"capability.Itmanagesmemory,executesthreads,andensuressecurity,makingitessentialforJavadeveloperstounderstandforefficientandrobustapplicationdevelop

Javaremainsatopchoicefordevelopersduetoitsplatformindependence,object-orienteddesign,strongtyping,automaticmemorymanagement,andcomprehensivestandardlibrary.ThesefeaturesmakeJavaversatileandpowerful,suitableforawiderangeofapplications,despitesomechall

Java'splatformindependencemeansdeveloperscanwritecodeonceandrunitonanydevicewithoutrecompiling.ThisisachievedthroughtheJavaVirtualMachine(JVM),whichtranslatesbytecodeintomachine-specificinstructions,allowinguniversalcompatibilityacrossplatforms.Howev

To set up the JVM, you need to follow the following steps: 1) Download and install the JDK, 2) Set environment variables, 3) Verify the installation, 4) Set the IDE, 5) Test the runner program. Setting up a JVM is not just about making it work, it also involves optimizing memory allocation, garbage collection, performance tuning, and error handling to ensure optimal operation.

ToensureJavaplatformindependence,followthesesteps:1)CompileandrunyourapplicationonmultipleplatformsusingdifferentOSandJVMversions.2)UtilizeCI/CDpipelineslikeJenkinsorGitHubActionsforautomatedcross-platformtesting.3)Usecross-platformtestingframeworkss


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Chinese version
Chinese version, very easy to use

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software
