之前写过一篇博客,关于非堆内存如何自动释放的,由此慢慢延伸写了几篇关于垃圾回收、finalize机制、引用和引用队列、sun.misc.Cleaner相关的文章,通过这几篇文章感觉自己收获很大了,对java垃圾回收相关的知识了解更深刻了。这篇博客主要做个汇总和简介,按照自己思路的延伸,把博客汇总下,方便大家阅读和查看。
1、学习NIO时候,对于DirectByteBuffer堆外内存的自动释放,因此了第一篇博客
java中使用堆外内存,关于内存回收需要注意的事和没有解决的遗留问题(等大神解答)
http://blog.csdn.net/aitangyong/article/details/39323125
2、为了研究NIO是如何实现堆外内存自动释放的,产生了第二篇博客
System.gc()和-XX:+DisableExplicitGC启动参数,以及DirectByteBuffer的内存释放
http://blog.csdn.net/aitangyong/article/details/39403031
3、研究了NIO的自动释放机制之后,引出了finalize和sun.misc.Cleaner,有了第三篇文章
Effective Java Item7:Avoid Finalizers,解释为什么finalize是不安全的,不建议使用
http://blog.csdn.net/aitangyong/article/details/39450341
4、为了解决finalize的不足,学习了下java引用和引用队列的机制,有了第四篇文章
java中的4种reference的差别和使用场景(含理论、代码和执行结果)
http://blog.csdn.net/aitangyong/article/details/39453365
5、最后利用前面学习到的理论,自己写了个自动释放堆外内存的代码,有了第五篇文章
使用sun.misc.Cleaner或者PhantomReference实现堆外内存的自动释放
http://blog.csdn.net/aitangyong/article/details/39455229
6、最近简单的做了个总结
http://blog.csdn.net/aitangyong/article/details/39478261