4.1java引用的种类
1)对象在内存中的状态
*可达状态
*可恢复状态
*不可达状态
只有当一个对象处于不可达状态时,系统才会真正回收该对象所占有的资源。
java语言对对象的引用有四种
强引用(最为常见),软引用,弱引用,虚引用。
4.2java的内存泄漏
可达状态的java对象,程序以后永远都不会再访问它们,它们所占用的内存空间也不会被回收,那么就会产生内存泄漏。
4.3垃圾回收机制
*跟踪并监控每个java对象,当某个对象处于不可达状态时,回收该对象所占用的内存。
*清理内存分配,回收过程中产生的内存碎片。
以上两点的工作量都不算小,因此垃圾回收算法就成为限制java程序运行效率的重要因素。
4.4内存管理小技巧
1)尽量使用直接量
当需要使用字符串或者包装类的实例时,程序不应该采用new的方式来创建对象,而应该采用直接量来创建它们。
2)使用StringBuilder和StringBuffer进行字符串连接
3)尽早释放无用对象的引用
4)尽量少用静态变量
5)避免在经常调用的方法,循环中创建java对象
6)缓存经常使用的对象,典型的为数据连接池,缓存了大量的数据库连接,每次程序需要访问数据库时都可以直接取出数据库连接。缓存技术是一种以空间换时间的技术。
7)尽量不要使用finalize方法
8)考虑使用SoftReference