1.内存泄露:

Java的内存泄漏是指某些对象不再被应用程序使用,而垃圾收集器(Garbage Collector)却没能识别它们是“不再使用的”,所以没有对这些对象进行回收,或者由于某些原因无法回收或者回收不彻底!

举例:

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

静态集合类没有被释放-对象没有被释放

递归调用层次太多

如果那些不使用的对象占用堆(heap)空间足够大,使得应用程序无法满足下一次内存分配需求,就会导致OutOfMemoryError错误。

内存泄漏和系统超负荷两者是有区别的,虽然可能导致的最终结果是一样的。

内存泄漏是用完的资源没有回收引起错误,而系统超负荷则是系统确实没有那么多资源可以分配了(其他的资源都在使用)。

内存泄漏可以通过软件调优来解决,系统超负荷则只能通过更新硬件来解决。

2.内存泄漏的表现

---内存快被占满,但还没被占满,处于临界点,这时候不会有报错,但会影响性能

---日志里明确产生OOM等错误。比如,下图,回落点连起来基本水平则表示正常回收,反之回收不彻底。

3.内存泄露的排查思路:

-----JVM和GC的关键参数设置(比如,-Xms -Xmx等都没有设置,那么可能会出现内存泄露)

-----排查代码

4.OutOfMemory常见类型

----栈溢出:java.lang.stackoverflowerror;fatal:stack size too small

排查:先看参数-Xss:每个线程的栈大小,用于保存函数调用、返回地址等,默认1M,如果报错,改为2M,如果还不行,捕获快照,去排查代码,有可能是递归调用的层次太多了。

----系统内存被占满:java.lang.outofmemoryerror:unable to create new native thread

解决:升级硬件

5.java.lang.OutOfMemoryError错误的可能原因,及排查思路:

---空间不足

---首先排查是不是硬件方面的问题

---如果硬件不错,再排查参数,是不是设置的小了

---内存泄漏

---如果硬件和参数都没问题,那么怀疑是内存泄露,需要排查JVM和GC的参数设置,如果还不行,需要排查代码

java io内存泄露_java内存泄露和OutOfMemory相关推荐

  1. java 内存溢出 内存泄露_java 内存泄露、内存溢出、内存不足

    内存泄露 什么是内存泄露? 在维基百科上的定义如图: 中文意思就是一个对象在内存中,而程序无法获取此对象,于是不能释放该对象所占用的内存. 百度百科上的定义如图: OWASP上的定义: 开发者无法释放 ...

  2. java 解决内存泄露_Java内存泄露的理解与解决

    Java内存管理机制 在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期.从申请分配.到使用.再到最后的释放.这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记 ...

  3. java 溢出与泄露_Java内存溢出与栈溢出

    一.背景知识 1.JVM体系结构 2.JVM运行时数据区 3.JVM内存模型 JVM运行时内存 = 共享内存区 + 线程内存区 3-1.共享内存区 共享内存区 = 持久带 + 堆 持久带 = 方法区 ...

  4. java查看内存泄露_Java内存泄露如何排查

    Java内存泄露是常常出现的问题,Java攀登网进行了该问题的整理,具体的如下所示: 1.2 内存泄露Memory Leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内 存泄露危害可以忽略 ...

  5. java什么时候可能产生内存溢出_JAVA内存泄露和内存溢出

    1)概念: 内存溢出:指在指定大小的内存空间,写入了超出大小的数据,从而导致了内存溢出. 内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误. 内存溢出通常发生于OLD段或Perm段垃圾回 ...

  6. java 鸡兔统统_Java内存泄露介绍

    Java的最显着的优点之一是其内存管理.您只需创建对象,并且Java Garbage Collector负责分配和释放内存.但是,情况并不那么简单,因为Java应用程序中经常发生内存泄漏. 本教程将说 ...

  7. java 句柄泄露_Java 文件句柄泄露问题解决小记

    Coding 技术小馆是 Coding 主办的技术沙龙,2018.1.20 将在深圳与大家探讨<高效 Workflow 实践> ,开放报名中,点击了解更多 维护 WebIDE 免不了要管理 ...

  8. java堆内存 数据结构_JAVA内存区域

    首先解释下内存溢出和内存泄露之间的区别,为后面的学习做些铺垫: 1.内存溢出和内存泄露的区别和联系 内存溢出 out of memory:是指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你 ...

  9. java 内存指针_java内存模型详解

    借用一句话:Java与C++之间有一堵内存动态分配和垃圾收集技术围成的高墙,墙外面的人想进来,墙里面的人却想出去. 一.我们为什么要了解JAVA内存 因为虚拟机帮我们JAVA程序员管理着内存,我们在n ...

  10. java 线程内存模型_JAVA内存模型与线程

    概述 由于计算机的运算速度和它的存储和通讯子系统的速度差距巨大,大部分时间都花在IO,网络和数据库上.为了压榨CPU的运算能力,需要并发.另外,优秀的并发程序对于提高服务器的TPS有重要的意义. 硬件 ...

最新文章

  1. R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值、R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的不同标记物情况下对应的AUC曲线、并进行对比
  2. JavaScript原型-进阶者指南
  3. noclobber:避免文件的重写
  4. 实现点击下载文件的几种方法
  5. gcn代码pytorch_GCN的简单实现(pytorch)
  6. python脚本判断一个数是否为素数的几种方法
  7. 小米改鸿蒙系统,小米、OV傻眼 魅族要用鸿蒙系统!
  8. 入住互联网酒店平台的体验
  9. webgl天空盒边界缝隙_WebGL three.js进修笔记 法向量网格材质MeshNormalMaterial的引见和建立360度全景天空盒的要领...
  10. c语言作业答案 填空题,C语言练习题-填空题(带答案)
  11. 思约云音乐 (绿色免费版)
  12. lisp医院化验系统_医院管理系统(his)电子病历 体检系统 l is pacs
  13. 凹点匹配分割 matlab,基于凹点和重心检测的粘连类圆形目标图像分割
  14. PTA jmu-python-函数-找钱 python实现
  15. 基因组Masked作用
  16. 武汉城建学院计算机专业柴曲,采访对话丨在世界一流的柴院学音乐,是怎样一种感受?...
  17. CTFhub备份文件下载
  18. UI设计师是做什么的?
  19. Week 8 Deep learning for object detection
  20. SSM项目秒杀系统---(一)业务分析与Dao层

热门文章

  1. Python编程专属骚技巧4
  2. Linux对运行服务操作命令
  3. shell脚本--sed的用法
  4. 服务器linux centos 7.4 搭建ftp服务器
  5. ASP.Net Core WebApi几种版本控制对比
  6. Wi-Fi模块的设置方法汇总
  7. compare two oracle database schemas
  8. linux建立普通用户命令,Linux普通用户执行特定的命令配置
  9. 计算机应用技术滨江计划,杭州高新区(滨江)列出干货满满的“计划表”
  10. jsapi.php必须传openid,【微信统一支付】发起支付, returnCode != SUCCESS, returnMsg = JSAPI支付必须传openid...