摘要: 1,如果一个栈先是增长,然后再收缩,那么在栈中弹出来的对象将不会被当做垃圾回收,即使使用栈的程序不再引用这些对象,它们也不会被回收,因为,在栈的内部保存了对象的过期引用(obsolete reference),过期引用指的就是永远不会再被解除的引用。2,在stack中解决过期引用的方法就是在把对象推出栈的时候,设置栈为null。3,自行管理内存的类都有可能出现内存溢出问题。4,缓存也是具有内存溢出问题5,还有就是监听器和其他回调6,在缓存中,只要外部仍然有对象的引用,那么请使用WeakHashMap来代表缓存,这样就能管理内存。7,同理监听器和回调。保存成WeakHashMap中的键。8, 阅读全文
posted @ 2012-03-04 15:31 Hecker385 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 第七条:避免使用终结方法1,终结方法(finalizer)会让程序不稳定,性能降低,出现可移植性的问题。2,Finalizer在c++中师析构器(destructors)的一部分,用作回收资源。在java中垃圾回收机制可以帮助完成。也可以通过try-finally在手动执行类似工作。3,在JVM中终结方法是被延迟执行的,也就是说,线程优先级低于其他类型的线程,不是第一时间你关闭的操作就被执行。所以切记不得用以在要求时间性上很严格的操作中。4,System.gc和System.runFinalization这两个方法也不能保证终结方法一定执行。5,提供一个显示的终止方法,并要求每个类的客户端在确 阅读全文
posted @ 2012-03-04 15:30 Hecker385 阅读(330) 评论(0) 推荐(0) 编辑