转载自  Java中的内存泄露的几种可能

Java内存泄漏引起的原因:

  内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏。

  长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏,尽管短生命周期对象已经不再需要,但是因为长生命周期持有它的引用而导致不能被回收,这就是Java中内存泄漏的发生场景。

造成内存泄漏的几种情况:

1、静态集合类引起内存泄漏

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

2、当集合里面的对象属性被修改后,再调用remove()方法时不起作用。

3、监听器

  在释放对象的时候却没有去删除这些监听器,增加了内存泄漏的机会。

4、各种连接

  比如数据库连接(dataSourse.getConnection()),网络连接(socket)和io连接,除非其显式的调用了其close()方法将其连接关闭,否则是不会自动被GC 回收的。

5、内部类和外部模块的引用

  内部类的引用是比较容易遗忘的一种,而且一旦没释放可能导致一系列的后继类对象没有释放。此外程序员还要小心外部模块不经意的引用,例如程序员A 负责A 模块,调用了B 模块的一个方法如: public void registerMsg(Object b); 这种调用就要非常小心了,传入了一个对象,很可能模块B就保持了对该对象的引用,这时候就需要注意模块B 是否提供相应的操作去除引用。

6、单例模式

  不正确使用单例模式是引起内存泄漏的一个常见问题,单例对象在初始化后将在JVM的整个生命周期中存在(以静态变量的方式),如果单例对象持有外部的引用,那么这个对象将不能被JVM正常回收,导致内存泄漏。

Java中的内存泄露的几种可能相关推荐

  1. Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

    Java中OutOfMemoryError(内存溢出)的三种情况及解决办法 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各 ...

  2. 诊断Java中的内存泄露

    每次我怀疑有内存泄漏时,我都要翻箱倒柜找这些命令.所以,这里总结一下以备后用: 首先,我用下面的命令监视进程: 1 while ( sleep 1 ) ; do ps -p $PID -o %cpu, ...

  3. Java中关于内存泄漏出现的原因以及如何避免内存泄漏

    转账自:http://blog.csdn.net/wtt945482445/article/details/52483944 Java 内存分配策略 Java 程序运行时的内存分配策略有三种,分别是静 ...

  4. (转载)Java中关于内存泄漏出现的原因以及如何避免内存泄漏

    原文链接 Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题.内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实 ...

  5. java中的内存泄漏

    ● 请问java中内存泄漏是什么意思?什么场景下会出现内存泄漏的情况? 考察点:内存泄漏 参考回答: Java中的内存泄露,广义并通俗的说,就是:不再会被使用的对象的内存不能被回收,就是内存泄露.如果 ...

  6. ​Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子​

    作者 l 会点代码的大叔(CodeDaShu) JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,让我们来看一看. 01 内存泄漏 & 内存溢出 1. 内存泄漏(memory lea ...

  7. android中内存泄露,Android中的内存泄露

    编辑推荐: 本文来自于csdn,本文主要从java的内存模型讲起,最终举出几个内存泄露的例子和解决方案. java运行时内存模型 具体信息:http://gityuan.com/2016/01/09/ ...

  8. Java中关于内存泄漏分析和解决方案,都在这里了!

    作者:李序锴 www.jianshu.com/p/54b5da7c6816 最近正在熟悉Java内存泄漏的相关知识,上网查阅了一些资料,在此做个整理算是对收获的一些总结,希望能对各位有所帮助,有问题可 ...

  9. Java虚拟机的内存空间有几种

    Java虚拟机的内存空间有几种?(1)问题分析: JVM(虚拟机)的内存划分 不同的数据使用的是哪一块内存空间 (2)核心答案讲解: Java虚拟机有那几块内存空间: 1)栈内存:方法运行时所进入的内 ...

最新文章

  1. mysql min怎么用_MySQL中MIN()函数的使用教程
  2. 协议森林14 逆袭 (CIDR与NAT)
  3. 阿里云TSDB在大数据集群监控中的方案与实战
  4. 计算机专业买win,新买的电脑是win10系统,有的人却费尽心思重装成win7,为什么呢...
  5. CTO总结的管理30条军规
  6. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)
  7. KVM中断虚拟化(一)
  8. “Device eth0 does not seem to be present”解决办法
  9. docker host模式拿到nginx远程ip端口_FastDFS基于Docker安装,免采坑版
  10. 计算机系统基本组成教学设计,《计算机系统的基本组成》教学设计.pdf
  11. Linux VNC使用
  12. JAVA多线程编程之异步
  13. android方向传感器 指南针,Android如何实现电子罗盘(指南针)方向传感器的应用
  14. Python str()函数
  15. Nacos本地进行了远程配置而远程未配置相关信息而导致应用报内存泄漏问题的异常
  16. java获取虾米数据_json获取属性值的方式
  17. 这几款app疫情期间活跃度为何如此高?方法太可了吧
  18. Java打印完整的堆栈信息
  19. 复旦大学计算机学院金玲飞,金玲飞 - 复旦大学 - 计算机科学技术学院
  20. 交通大数据应用场景——高速落地检

热门文章

  1. [JavaWeb-HTML]HTML标签_列表标签
  2. [C++11]decltype在泛型编程中的使用举例
  3. cd返回上一 git_如何使用Git实现自动化部署你的项目
  4. 7-11 堆栈操作合法性 (20 分)以及堆栈讲解(c语言实现)
  5. AGC027D - Modulo Matrix
  6. bzoj#2125. 最短路
  7. [BeiJing2011][bzoj2460] 元素
  8. I love counting HDU - 6964
  9. YBTOJ洛谷P4068:数字配对(网络流)
  10. CF889E-Mod Mod Mod【dp】