<p>If I call <code>finalize()</code> on an object from my program code, will the <strong>JVM</strong> still run the method again when the garbage collector processes this object?</p>

<p>This would be an approximate example:</p>

<pre><code>MyObject m = new MyObject();

m.finalize();

m = null;

System.gc()
</code></pre>

<p>Would the explicit call to <code>finalize()</code> make the <strong>JVM</strong>'s garbage collector not to run the <code>finalize()</code> method on object <code>m</code>?</p>

The finalize method is never invoked more than once by a JVM for any given object. You shouldn't be relying on finalize anyway because there's no guarantee that it will be invoked. If you're calling finalize because you need to execute clean up code then better to put it into a separate method and make it explicit, e.g:
```
```
public void cleanUp() {
  .
  .
  .
}

myInstance.cleanUp();
```
```