如何在Java中调试覆盖finalize()方法?

时间:2016-12-31 13:50:12

标签: java debugging netbeans finalizer finalize

正如我们所知道的那样......

  

java.lang.Object.finalize()由垃圾收集器调用   垃圾收集确定不再存在时的对象   对象的引用。子类重写finalize方法   处置系统资源或执行其他清理。 finailze()   应该重写方法以使对象包含清理代码   或者处理之前应该完成的系统资源   该对象是垃圾收集。

所以我创建了一个类并使用我的一些代码覆盖了finalize()方法,如下所示,因为我的主要概念是在文本文件中关闭表单之前写入我的类包含的所有数据保存它......

public class MainClass
{
    public static void main(String[] args) {
        NewDEMOClass obj = new NewDEMOClass();
        obj.AddValueToMap("A",1);
        obj.AddValueToMap("B",2);
        obj.AddValueToMap("C",3);
        // Many Value Added Here...         
    }    
}

然后我的自定义类是......

public class NewDEMOClass
{
    private Map<String, Integer> customDictionary = new HashMap<String, Integer>();

    public NewDEMOClass()
    {   

    }

    public AddValueToMap(String Key, Integer Value)
    {   
        customDictionary.put(Key, Value);
    }           

    @Override
    protected void finalize()
    {
        String totalWord = "";
        for ( Map.Entry<String, Integer> entry : customDictionary.entrySet() ) {
            totalWord += entry.getKey() + "-" + entry.getValue() + System.lineSeparator();
        }
        while (true)
        {
            try(
                PrintWriter out = new PrintWriter("customDictionary.txt", "UTF-8")  ){
                out.println( totalWord );
                break;
            } catch (FileNotFoundException ex) {
                Logger.getLogger(AutoUrduPredictorAndSuggester.class.getName()).log(Level.SEVERE, null, ex);
            } catch (UnsupportedEncodingException ex) {
                Logger.getLogger(AutoUrduPredictorAndSuggester.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}

所以我的主要问题和问题是我想逐行调试finalize()方法内部代码以查看错误等等但是我无法在使用NetBeans IDE时添加断点。那么现在该怎么做以及如何...... ???

0 个答案:

没有答案