the answer to your question is number second for checking this you can create a finalize method and throw a runtime exception or any checked exception without handling it in try catch block see what's the output.
For example run this Program.
public class
Test {
private int[] bigArray=new int[50000];
public static void main(
String args[])
{
Test a=new Test();
Test b=new Test();
Test c=new Test();
a=null;
b=null;
Test d=new Test();
Test f=new Test();
}
protected void finalize() throws Throwable
{
throw new Exception();
}
}