Помогите плиз, объясните где я туплю ?
Не могу заставить вызываться finalize():
$ cat example.java
import java.io.*;
class TTest
{
public TTest()
{
System.out.println("TTest()");
}
protected void finalize() throws Throwable
{
System.out.println("~TTest()");
File file = new File("/tmp/finalize");
file.createNewFile();
}
public void f()
{
System.out.println("TTest.f()");
}
}
class example
{
static public void main(String[] args)
throws Throwable
{
TTest a = new TTest();
a.f();
}
}
$ javac example.java
$ java example
TTest()
TTest.f()
Какого черта не вызывается finalize() ?
Думал может System уже дохлый к моменту вызова, так и файл не создается... Что не так в этом примере ???