您的位置:首页 > 其它

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是否提供响应的操作去除引用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: