Java: 内存泄漏
来源:互联网 发布:2012年欧洲杯决赛 知乎 编辑:程序博客网 时间:2024/06/03 21:02
内存泄露是什么呢? 内存泄漏是指,一个不再被程序使用的对象或变量还在内存中战友存储空间。
为了防止研发人员忘记释放已被分配的内存,Java语言引入了垃圾回收机制,由垃圾回收器回收不再使用的对象,既然有垃圾回收器来负责回收垃圾,那么,Java中是否还会存在内存泄漏的问题呢?答案是存在内存泄漏。
首先,在Java语言中,判断一个内存空间是否符合垃圾回收的标准有两个:
1. 给对象赋予了空值null,以后再没有被使用过。
2.给对象赋予了新值,重新分配了内存空间。
所以内存泄漏主要有两种情况:
1.在堆中申请的空间没有被释放
2.对象已经不再被使用,但仍还在内存中保留着。
垃圾回收机制可以有效的解决第一种情况,而第二种却无法保证。Java中的内存泄漏主要指的是第二种。
通常,Java语言中容易引起内存泄漏的原因有很多,主要有以下几方面:
a.静态集合类。如果容器是静态的,由于他们的生命周期与程序一致,那么容器中的对象在程序结束之前都不能被释放,从而造成内存泄漏。
b.各种连接。 比如数据库连接、网络连接、以及io连接。只有在连接被关闭后,垃圾回收器才会回收对应的对象。如果未被关闭,会造成大量的对象无法回收,从而引起内存泄漏。
c.监听器
d.变量不合理的作用域。一般而言,如果一个变量定义的作用范围大于其使用范围,很可能造成内存泄漏,另一方面,如果没有及时把对象设置为null,也很有可能导致内存泄漏。
e.单例模式。 饿汉式单例模式,比较容易引起内存泄漏。
阅读全文
0 0
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- java 内存泄漏
- java内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- java内存泄漏
- Java的内存泄漏
- Java内存泄漏问题
- Java的内存泄漏
- Java的内存泄漏
- elasticsearch5.4.0 生产环境部署 及插件 ik + head +kibana
- 关于include指令和include动作的区别
- 前端开发问题总结
- HDU 5791 Two——DP
- Common Substrings POJ
- Java: 内存泄漏
- loadrunner Web_类函数之web_reg_dialog()
- 1004. 成绩排名 (20)
- 2017.9.18 鬼谷子的钱袋 思考记录
- 使用OnTouchListener同时处理onClick与onLongClick
- MySQL InnoDB四个事务级别 与 脏读、不重复读、幻读
- springMVC--关于no mapping found for http request with uri .......
- sleep与yield
- Java反射机制