Java问题记录——OutOfMemoryError
Java问题记录——OutOfMemoryError
摘要:本文主要分析了OutOfMemoryError的产生原因。
没有分页导致占用大量内存
查看进程
使用 jps 命令查看当前运行的Java进程和进程号:
[root@VM_40_24_centos ~]# jps
25953 Bootstrap
7832 Jps
根据进程号查看实例的运行情况
使用 jmap 命令查看当前占用内存最高的实例:
[root@VM_40_24_centos ~]# jmap -histo:live 25953 | grep 'xxx.xxx' | head -10
4: 784043 75268128 xxx.xxx.XxxXxxxxx
19: 15435 987840 xxx.xxx.Xxxx
48: 2000 208000 xxx.xxx.Xxx
52: 451 180400 xxx.xxx.XxxxXxx
111: 646 51680 xxx.xxx.XxxXxxxxx
316: 104 9984 xxx.xxx.XxxXxxxxxXxxx
476: 282 4512 xxx.xxxxxxx.XxxxxxxXxxxxxxxxx
496: 267 4272 xxx.xxxxxxx.XxxxxxxXxxxxxxxxxxxxxxXxxxxxxx
877: 47 752 xxx.xxxxxxx.XxxxxXxxxxxxxxxxXxxxxxxx
878: 47 752 xxx.xxxxxxx.XxxxxxXxxxXxxxxxxxxXxxxxxxxXxxxxxxxx
在日志里找到第一次出现的地方
根据在Linux中找到的占用内存的实例,去日志查看是因为什么操作导致的:
2019-06-15 10:34:35.398 INFO 10369 --- [askExecutor-818] c.i.ide.engine.task.XxxxXxxxxxXxxx : send message is success!
Exception in thread "http-nio-8080-Acceptor-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
at org.apache.tomcat.util.net.SocketBufferHandler.<init>(SocketBufferHandler.java:41)
at org.apache.tomcat.util.net.NioEndpoint.setSocketOptions(NioEndpoint.java:404)
at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:502)
at java.lang.Thread.run(Thread.java:748)
查看代码
根据日志文件和实例名称,查看相关代码,发现是因为查询数据的时候没有分页,导致查询了全部数据,大概有一百万条:
List<XxxXxxxxx> xxx = service.listXxx();
结论
以后在写代码的时候一定要注意分页操作。
Java问题记录——OutOfMemoryError的更多相关文章
- Java 日志记录规则
Java 日志记录规则 规则一:日志是面向读者的 我们不应该让无价值的信息使日志文件变得乱糟糟,比如说完整打印所有的实体字段. 通常,实体名字和其逻辑关键字足以识别在表格中的一条记录了. 规则二:匹配 ...
- 补充Java面试记录
补充Java面试记录 背景:这两天面试遇到的部分问题都分散在了前面两篇文摘中,这里再做一些其他的记录,以备不时之需! 一.谈谈你对SpringBoot的理解? SpringBoot简介:SpringB ...
- Java问题记录——循环里的二次判断与状态更新
Java问题记录——循环里的二次判断与状态更新 摘要:本文主要记录了在循环操作时可能出现的问题. 问题重现 在使用循环结构时,如果使用了定时任务,或者代码会多次调用循环结构,可能会导致有些对象会被循环 ...
- Java问题记录——IllegalMonitorStateException
Java问题记录——IllegalMonitorStateException 摘要:本文主要分析了IllegalMonitorStateException的产生原因. 部分内容来自以下博客: http ...
- SLF4J (The Simple Logging Facade for Java)使用记录
SLF4J (The Simple Logging Facade for Java)使用记录 官网 http://www.slf4j.org/ 参考资料 官方文档 什么是 SLF4J? 官网: The ...
- Java内存溢出OutOfMemoryError的产生与排查
在java的虚拟机异常中,有两个异常是大家比较关心的,一个是StackOverflowError,另一个是OutOfMemoryError.今天我们就来看看OutOfMemoryError是怎么产生的 ...
- 【Java】记录一次代码优化
前不久的项目时间紧张,为了尽快完成原型开发,写了一段效率相当低的代码. 最近几天闲下来,主动把之前的代码优化了一下:) 标签:Java.Mybatis.MySQL 概况:本地系统从另外一个系统得到 ...
- 普华永道高级JAVA面试记录
最近在考虑换个工作 原因?咱能不逗吗? 一面感觉发挥不错 二面之后累觉不爱 基本上浪费了半天的工资(好多钱啊~~~) PWD上海地址在浦东软件园 工作环境说实话没我现在工作的环境好,不过里面的人 ...
- Java学习笔记(十九)——Java 日志记录 AND log4j
[前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的 ...
随机推荐
- 完整版的CAD技巧!3天轻松玩转CAD,零基础也能学会
最近有很多小伙伴反应,CAD图纸学起来有点小困难,也许你还没能掌握技巧,CAD大神带你3天轻松玩转CAD,零基础也能快速学会. 一.看懂图纸是关键 CAD制图首先得让自己知道要绘制什么,如果心中对图纸 ...
- 【win10】通过环境变量来快速打开应用程序
step1:建一个空文件夹,并把文件夹路径复制到剪贴板. step2:依次右键点击“此电脑”.属性.高级系统设置.环境变量,定位到“系统变量”,点击新建. (说明:环境变量分为用户变量和系统变量,用户 ...
- JS基本语法---while循环
循环:一件事不停的或者是重复的做 循环要有结束的条件,循环还应该有计数器(记录循环的次数的) while循环 while循环语法: 计数器 var 变量=0; while(循环的条件){ ...
- 仓库管理移动应用解决方案——C#开发的移动应用开源解决方案
产品简介 SmoWMS是一款仓库管理移动解决方案,通过Smobiler平台开发,包含了仓库管理中基础的入库.出库.订单管理.调拨.盘点.报表等功能.支持扫码条码扫描.RFID扫描等仓库中常见的场景. ...
- MySQL 部署分布式架构 MyCAT (一)
架构 环境 主机名 IP db1 192.168.31.205 db2 192.168.31.206 前期准备 开启防火墙,安装配置 mysql (db1,db2) firewall-cmd --pe ...
- Html学习之九(CSS选择器的使用--位置选择器)
位置选择器: 一..:first-child选择器 <!doctype html> <html> <head> <meta charset="utf ...
- 好用的代码统计小工具SourceCounter(下载)
SourceCounter下载链接 https://pan.baidu.com/s/12Cg51L0hRn5w-m1NQJ-Xlg 提取码:i1cd 很多时候我们需要统计自己所写的代码的数量.举个栗子 ...
- pycharm 设置django server
- 接口测试中GET和POST两种基本HTTP请求方法的区别
面试时,可以回答(一般答前4条就行): GET参数通过url传递,POST放在request body中 GET请求在url中传递的参数是有长度限制的,而POST没有 GET比POST更不安全,因为参 ...
- 第七周第二次Scrum会议
工作: 根据上个周对前端的布置学习,布置大家开发了相应的界面.(界面开发成果写在测试报告) 地点: 二餐二 会议照片: 忘记拍了... 核心问题: 如何编写统一风格的前端界面. 解决: 将相应资源打包 ...