0%

每天进步一点点 2013-04-25

1、避免创建不必要的对象。最好能重用对象,而不是每次在需要的时候就创建一个功能相同的新对象。如果对象是不可变的,或者已知不会变,都可以重用。 2、消除过期引用。虽然Java有垃圾回收,但垃圾回收基于引用计数,只有对象没有被其他对象引用时,才能被回收。特别注意在数组以及集合中,他们包含的对象都被数组以及集合类引用,需要手工从数组或集合类对象中删除或设为null,否则只能等到引用他们的数组或集合对象被回收。这是引发内存泄露的原因。还有事件监听器,setListener的时候增加了listener的引用,如果没有显示地清除listener,也可能会导致无法回收listener,建议只保存listener的weak reference。总结一下,一个对象,如果被生命周期长于自己的对象引用,就可能发生内存泄露,原因在于只要引用者不释放,被引用者就无法回收。 3、不要使用finalizer方法。释放回收资源应该在不需要的时候主动执行,别想靠这个方法在gc时回收。finalizer不知道什么时候,也不一定会执行。Q:为什么设计这个方法?