今天花了很长时间才找到程序中的与引用相关的一个潜在的BUG的原因。该程序的对象之间的引用结构,结构更新有些复杂。下面是该错误一点相关的总结,希望能对我和一样的新手有所帮助: 1、虽然JAVA中没有像C++中那样指针,但实现际上,在JAVA中,对象的引用就是“指针”,所以可以这样说,在JAVA中基本上处处是指针。在调试中最常见的错误就是无效的指针的引用。并且垃圾回收机制本质上并不能减少像C++中那样无效指针的错误,唯一能做的仅仅是消除了内存泄漏而已,对于指针的引用错误仍旧丝毫不能避免。在JAVA中虽然没有像C++那样,当一个对象不再使用时需要使用delete来释放内存,但是类似的,在JAVA中当一个对象不再使用或一个对象生命周期死亡时,必须使用 var=null的方式来释放所有对该对象的引用。因此,在C++中的delete语句在JAVA中只是用另外一种形式“var=null”来代替。当然,在方法内部创建的局部对象不必须显示的设定变量值为null,因为会随着方法退出,而使变量的生命周期节束,不再引用对象。
  2、当一个对象的生命周期节束时,必须及时的把其所有相关的引用都删除掉,包括该对象所包含的子对象的子对象....一级级的相关的引用都设定为null。否则,任何多余的引用的错误可能在当时并不会显露出来,而是推迟到某一个时刻才暴露出来,使得错误点很难被发现,甚至该错误永远也不会显露出来,从而出现像C++那样类似的内存泄露情况(一个虽然被引用,但永远不会被使用的对象的存在,只是耗费内存而已)。