1.静态集合类像HashMap、Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,所有的对象Object也不能被释放,因为他们也将一直被Vector等应用着。

Static Vector v = new Vector();
for (int i = 1; i<100; i++)
{
Object o = new Object();
v.add(o);
o = null;
}

  

在这个例子中,代码栈中存在Vector 对象的引用 v 和 Object 对象的引用 o 。在 For 循环中,我们不断的生成新的对象,然后将其添加到 Vector 对象中,之后将 o 引用置空。问题是当 o 引用被置空后,如果发生 GC,我们创建的 Object 对象是否能够被 GC 回收呢?答案是否定的。因为, GC 在跟踪代码栈中的引用时,会发现 v 引用,而继续往下跟踪,就会发现 v 引用指向的内存空间中又存在指向 Object 对象的引用。也就是说尽管o 引用已经被置空,但是 Object 对象仍然存在其他的引用,是可以被访问到的,所以 GC 无法将其释放掉。如果在此循环之后, Object 对象对程序已经没有任何作用,那么我们就认为此 Java 程序发生了内存泄漏。

2.各种连接,数据库连接,网络连接,IO连接等没有显示调用close关闭,不被GC回收导致内存泄露。

3.监听器的使用,在释放对象的同时没有相应删除监听器的时候也可能导致内存泄露。

最新文章

  1. [OpenCV] Samples 12: laplace
  2. IOS开发——02_第一个类的创建、声明…
  3. list转datatable
  4. Java log4j详细教程
  5. 通过NameValuePairsValueProvider对象来获取指定前缀的Key
  6. python核心编程学习记录之基础知识
  7. python 补充-decode和encode
  8. SQL语句查找重复记录
  9. wordpress换域名后无法登陆的解决方案
  10. iOS开发系列之运动事件
  11. 七.生成n位随机字符串
  12. dev中 使用一些控件后,窗体屏蔽右键某些菜单
  13. WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(二)实现IRequestChannel(2016-03-15 12:35)
  14. python 附加作业01
  15. ansible之一:安装与配置
  16. 自建 Gitlab (邮箱配置、拆分 PostgreSQL、Redis) + 随想
  17. oracle的存储过程和定时任务编写体会
  18. poi-对于word的操作(一)
  19. Codeforces 295C Greg and Friends BFS
  20. python基础之import模块导入和包的调用

热门文章

  1. Java 出现“Illegal key size”错误的解决方案
  2. ping请求超时的解决方法
  3. js正则表达式,密码长度要大于6位,由数字和字母组成
  4. ffplay 一些好玩的filter
  5. Linux常用命令之scp
  6. Facebook图片存储系统Haystack——存小文件,本质上是将多个小文件合并为一个大文件来降低io次数,meta data里存偏移量
  7. Spring MVC 注解json 配置
  8. 调试windows服务最简单的方法之一
  9. 关于Spring Security的笔记
  10. hdu-5748 Bellovin(LIS)