Win7 64位下安装pomelo 1.2.0
2015-11-04 13:30
183 查看
1、静态集合类
像HashMap、Vector等静态集合类的使用最容易引起内存泄漏,因为这些静态变量的生命周期与应用程序一致,如果Vector是静态的,那么它将一直存在,而其中所有的object对象也不能被释放,因为它们也将一直被该Vector引用着。
2、监听器
在java变成中,我们都需要和监听器打交道,通常一个应用当中会用到很多监听器,我们会调用一个控件的诸如addXXXListener()等方法来增加监听器,但往往在释放对象的时候却没有记住去删除这些监听器,从而增加了内存泄漏的机会。
3、物理连接
一些物理连接,比如数据库连接和网络连接,除非其显式的关闭了连接,否则是不会被GC回收的。JAVA数据库连接一般用DataSource.getConnection(),当不再使用时必须用close()方法来释放,因为这些连接是独立于JVM的。对于Resultset和Statement对象可以不进行显式回收,因为Connection在任何时候都无法自动回收,而Connection一旦回收,Resuletset和Statement对象就会立即为NULL,但是如果使用连接池,情况就不一样了,除了要显示地关闭连接,还必须显式地关闭Resuletset Statement对象(关闭其中一个,另外一个也会关闭),否则就会造成大量的Statement对象无法释放,从而引起内存溢出。
4、内部类和外部模块等的引用
内部类的引用是比较容易遗忘的一种,而且一旦没释放可能导致一系列的后继类对象没有释放。对于程序员而言,自己的程序很清楚,如果发现内存泄漏,自己对这些对象的应用可以很快定位解决,但是现在的应用软件并非一个人实现,模块互的思想在现代软件中的非常明显,所以程序员要小心外部模块不经意的引用,例如程序员A负责A模块,调用了B模块的一个方法如:public void registerMsg(Object b);这种调用就要非常小心了,传入了一个对象忙,很可能模块B就保持了对该对象的应用,这时候就需要注意模块B是否提供响应的操作去除引用。
像HashMap、Vector等静态集合类的使用最容易引起内存泄漏,因为这些静态变量的生命周期与应用程序一致,如果Vector是静态的,那么它将一直存在,而其中所有的object对象也不能被释放,因为它们也将一直被该Vector引用着。
2、监听器
在java变成中,我们都需要和监听器打交道,通常一个应用当中会用到很多监听器,我们会调用一个控件的诸如addXXXListener()等方法来增加监听器,但往往在释放对象的时候却没有记住去删除这些监听器,从而增加了内存泄漏的机会。
3、物理连接
一些物理连接,比如数据库连接和网络连接,除非其显式的关闭了连接,否则是不会被GC回收的。JAVA数据库连接一般用DataSource.getConnection(),当不再使用时必须用close()方法来释放,因为这些连接是独立于JVM的。对于Resultset和Statement对象可以不进行显式回收,因为Connection在任何时候都无法自动回收,而Connection一旦回收,Resuletset和Statement对象就会立即为NULL,但是如果使用连接池,情况就不一样了,除了要显示地关闭连接,还必须显式地关闭Resuletset Statement对象(关闭其中一个,另外一个也会关闭),否则就会造成大量的Statement对象无法释放,从而引起内存溢出。
4、内部类和外部模块等的引用
内部类的引用是比较容易遗忘的一种,而且一旦没释放可能导致一系列的后继类对象没有释放。对于程序员而言,自己的程序很清楚,如果发现内存泄漏,自己对这些对象的应用可以很快定位解决,但是现在的应用软件并非一个人实现,模块互的思想在现代软件中的非常明显,所以程序员要小心外部模块不经意的引用,例如程序员A负责A模块,调用了B模块的一个方法如:public void registerMsg(Object b);这种调用就要非常小心了,传入了一个对象忙,很可能模块B就保持了对该对象的应用,这时候就需要注意模块B是否提供响应的操作去除引用。
相关文章推荐
- 鸟哥的Linux私房菜(基础篇)- 第二十二章、软件安装:原始码与 Tarball
- linux 下名称改为bogon
- alpha版、beta版、rc版的意思
- Java的四种引用类型
- XML中输入特殊符号
- DP--UVA - 437 The Tower of Babylon
- Oracle笔记
- alpha版、beta版、rc版的意思
- [LeetCode] Longest Increasing Subsequence
- C++基本数据类型
- Android开发安装项目控制台报 INSTALL_FAILED_INSUFFICIENT_STORAGE
- smarty模板引擎总结七系统插件
- mysql读写性能测试
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
- java常见的几种内存溢出和解决方案
- Android 网络通信框架Volley简介(Google IO 2013)
- 一些经典===>>用SQL语句操作数据
- 中文文本聚类(切词以及Kmeans聚类)
- Android项目重构之路:实现篇
- 欢迎使用CSDN-markdown编辑器