疯狂java04--java的内存回收

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



猜你喜欢

转载自blog.csdn.net/little_____white/article/details/80954643
今日推荐