背景:线上数据传输功能开启一段时间后就会出现内存溢出

个人理解:内存溢出,说明要不然获取到大量数据导致内存溢出,要不然就是数据无法释放,随着时间堆积越来越多。

日志:查看日志定位是数据传输处的内存溢出导致的,该模块并非使用的定时任务,而是项目启动时运行,while(true)循环推送数据,推送完成后sleep5秒。初步以为是里面的对象未释放,但检查后发现所有对象使用完以后都置为null了。

检查方式:使用jdk的工具jconsole.exe,jvisualvm.exe进行检查

本地程序运行以后,从jconsole里面看到堆内存在缓慢增加,最后达到上限,内存溢出。查看jvisualvm 定位溢出点。

个人理解就是接收端接收速度没有发送端发送的快,导致发送端数据累积发送不过去,越来越多导致数据溢出。查看接收端发现30个线程处理的情况下,5秒钟只能够处理约1000条数据,而发送端是设置的没5秒发送5000条数据。
处理方案:开线程。多套服务接收。修改接收端方法一次接受多条数据(本次不行,限制了一次只能接受一条)

jconsole.exe 和jvisualvm.exe 都在jdk的bin目录下。jconsole.exe打开后直接点击对应的程序,就可以查看了

点击内存可以看到内存的使用情况。
jvisualvm.exe点开后选择对应的程序右侧抽样-内存就可以查看内存的使用情况了

PS : jconsole.exe的内存页面很适合用来学习内存的。堆内存分3个部分,Eden space ,Survivor Space,Tenured Gen。

新建的对象在Eden Space,满了回收,不能回收的到Survivor Space,多次回收都无法回收的到 Tenured Gen

java 内存溢出快速定位相关推荐

  1. java内存溢出的定位和分析

    内存溢出在实际的生产环境中经常会遇到,比如,不断的将数据写入到一个集合中,出现了死循环,读取超大的文件等,都会造成内存溢出. 如果出现了内存溢出,首先我们需要定位到发生内存溢出的环节,并进行分析,是正 ...

  2. java 二维数组内存溢出_模拟Java内存溢出

    本文通过修改虚拟机启动参数,来剖析常见的java内存溢出异常(基于jdk1.8). 修改虚拟机启动参数 这里我们使用的是IDEA集成开发环境,选择Run/Debug Configurations 然后 ...

  3. java内存溢出怎么排查_【转】Java学习---内存溢出的排查经历

    前言 OutOfMemoryError 问题相信很多朋友都遇到过,相对于常见的业务异常(数组越界.空指针等)来说这类问题是很难定位和解决的. 本文以最近碰到的一次线上内存溢出的定位.解决问题的方式展开 ...

  4. Java内存溢出分析

    内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题.内存溢出与锁表则不然,一 ...

  5. java内存溢出分析工具:jmap使用实战

    java内存溢出分析工具:jmap使用实战 在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap.  1 使用命令  在环境是linux+jdk1.5以上,这个工具是自带的,路 ...

  6. Java 内存溢出(一)原因、复现、排查

    目录 一.内存溢出原因 二.内存溢出实例 1.堆溢出 2.虚拟机栈和本地方法栈溢出 3.方法区和运行时常量池溢出 4.本机直接内存溢出 三.内存溢出排查 内存溢出: 是指应用系统中存在无法回收的内存或 ...

  7. java内存溢出 栈溢出的原因与排查方法

    java内存溢出 原因与排查方法 1. 内存溢出的原因是什么? 内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,导致剩余的内存不够用,造成的内存溢出.如果出现这种现象可行代码排查: 一 ...

  8. Java内存溢出问题排查分析

    目录 前言 一.MAT(Memory Analyzer Tool) 二.软件初识 三.捕获dump文件 1.主动方式 2.被动方式 四.分析dump文件 总结 前言 项目运行过程中,我们可能会遇到Ja ...

  9. Java内存溢出详解之Tomcat配置

    Java内存溢出详解 转自:http://elf8848.iteye.com/blog/378805 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError ...

最新文章

  1. C语言与数据库操作入门(Win版)
  2. 并发编程之Synchronized原理
  3. MapReduce编程实战之“高级特性”
  4. percona mysql5.7进程出现大量unauthenticated user解决记录
  5. linux c打印日志文件,linux c下log输出代码模板示例代码
  6. CFile、CStdioFile、FILE和其他文件操作(转)
  7. linux中的进程有哪三种基本状态,Linux下的进程有哪三种状态?()
  8. 【shell编程基础0】bash shell编程的基本配置
  9. win11如何创建访客账户 windows11创建访客账户的设置方法
  10. AspSpider再次开放asp.net2.0 免费空间注册
  11. MySQL之 视图,触发器,事物,存储过程,函数(Day48)
  12. uchar与char
  13. soapUI接口测试工具
  14. 破解Prezi桌面版30天限制的方法
  15. linux英文论文范例,Argument essay官方主题范文三十六篇-经典英文议论文范例
  16. 计算机硬盘合并怎么弄,如何将分区的硬盘合并为一个磁盘?
  17. SQL Server 错误:尝试打开或创建物理文件时,CREATE FILE 遇到操作系统错误
  18. 使用PLC-Recorder快速连接PLC记录数据
  19. 【Hexo搭建个人博客】:yilia主题配置(四) - 分类管理
  20. Mac M1安装ta-lib

热门文章

  1. python运输问题_用Python求解运输问题
  2. 专家预言未来机器人性XX爱OO或成常态,并利于身心健康
  3. 【微信小程序】WXML语法——数据绑定
  4. Python使用selenium过天眼查滑块验证码反爬实现模拟登录
  5. 三相桥式全控整流理论知识
  6. 【毕业优刊】想要毕业前录用一篇2区SCI论文,现在提交没问题,涵盖算法、传感器、自然语言处理等计算机大部分领域
  7. 一位世界500强人力资源总监的六轮面试经历
  8. latex 公式太长 自动换行
  9. ​怎么用手机在PDF上绘图?这个方法分享给你
  10. 吐血整理的 Android 性能优化思维导图,让面试官眼前一亮