java 内存溢出快速定位
背景:线上数据传输功能开启一段时间后就会出现内存溢出
个人理解:内存溢出,说明要不然获取到大量数据导致内存溢出,要不然就是数据无法释放,随着时间堆积越来越多。
日志:查看日志定位是数据传输处的内存溢出导致的,该模块并非使用的定时任务,而是项目启动时运行,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 内存溢出快速定位相关推荐
- java内存溢出的定位和分析
内存溢出在实际的生产环境中经常会遇到,比如,不断的将数据写入到一个集合中,出现了死循环,读取超大的文件等,都会造成内存溢出. 如果出现了内存溢出,首先我们需要定位到发生内存溢出的环节,并进行分析,是正 ...
- java 二维数组内存溢出_模拟Java内存溢出
本文通过修改虚拟机启动参数,来剖析常见的java内存溢出异常(基于jdk1.8). 修改虚拟机启动参数 这里我们使用的是IDEA集成开发环境,选择Run/Debug Configurations 然后 ...
- java内存溢出怎么排查_【转】Java学习---内存溢出的排查经历
前言 OutOfMemoryError 问题相信很多朋友都遇到过,相对于常见的业务异常(数组越界.空指针等)来说这类问题是很难定位和解决的. 本文以最近碰到的一次线上内存溢出的定位.解决问题的方式展开 ...
- Java内存溢出分析
内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题.内存溢出与锁表则不然,一 ...
- java内存溢出分析工具:jmap使用实战
java内存溢出分析工具:jmap使用实战 在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap. 1 使用命令 在环境是linux+jdk1.5以上,这个工具是自带的,路 ...
- Java 内存溢出(一)原因、复现、排查
目录 一.内存溢出原因 二.内存溢出实例 1.堆溢出 2.虚拟机栈和本地方法栈溢出 3.方法区和运行时常量池溢出 4.本机直接内存溢出 三.内存溢出排查 内存溢出: 是指应用系统中存在无法回收的内存或 ...
- java内存溢出 栈溢出的原因与排查方法
java内存溢出 原因与排查方法 1. 内存溢出的原因是什么? 内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,导致剩余的内存不够用,造成的内存溢出.如果出现这种现象可行代码排查: 一 ...
- Java内存溢出问题排查分析
目录 前言 一.MAT(Memory Analyzer Tool) 二.软件初识 三.捕获dump文件 1.主动方式 2.被动方式 四.分析dump文件 总结 前言 项目运行过程中,我们可能会遇到Ja ...
- Java内存溢出详解之Tomcat配置
Java内存溢出详解 转自:http://elf8848.iteye.com/blog/378805 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError ...
最新文章
- C语言与数据库操作入门(Win版)
- 并发编程之Synchronized原理
- MapReduce编程实战之“高级特性”
- percona mysql5.7进程出现大量unauthenticated user解决记录
- linux c打印日志文件,linux c下log输出代码模板示例代码
- CFile、CStdioFile、FILE和其他文件操作(转)
- linux中的进程有哪三种基本状态,Linux下的进程有哪三种状态?()
- 【shell编程基础0】bash shell编程的基本配置
- win11如何创建访客账户 windows11创建访客账户的设置方法
- AspSpider再次开放asp.net2.0 免费空间注册
- MySQL之 视图,触发器,事物,存储过程,函数(Day48)
- uchar与char
- soapUI接口测试工具
- 破解Prezi桌面版30天限制的方法
- linux英文论文范例,Argument essay官方主题范文三十六篇-经典英文议论文范例
- 计算机硬盘合并怎么弄,如何将分区的硬盘合并为一个磁盘?
- SQL Server 错误:尝试打开或创建物理文件时,CREATE FILE 遇到操作系统错误
- 使用PLC-Recorder快速连接PLC记录数据
- 【Hexo搭建个人博客】:yilia主题配置(四) - 分类管理
- Mac M1安装ta-lib