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日志对调试,记录运行,问题定位都起到了很重要的 ...
随机推荐
- find命令通过排序只保留最新的文件目录
find /usr/local/canal/logs/example -type d -name "*-*" | sort -nr | awk '{if (NR>=2){pr ...
- Android框架Volley之:ImageRequest请求实现图片加载
首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ...
- 重启电脑 wamp图标是橙色(未变绿)
记录一个错误: 修复系统漏洞后,重启电脑,wamp没有开机自启动,手动启动后发现,图标是大红色变成了橙色,也就是服务未完全启动(1/2)状态. ??? 但是我其实也不知道是哪个服务(Apache/My ...
- DataGuard搭建逻辑StandBy
DataGuard搭建逻辑StandBy 原创 作者:bayaim 时间:2016-03-31 17:23:48 272 0删除编辑 物理StandBy优点是效率高,缺点是只读模式不能恢复,恢复模 ...
- 【cf1111】C. Creative Snap (dfs+dp)
传送门 简单的dfs+dp即可解决.根本不用动态开点 /* * Author: heyuhhh * Created Time: 2019/11/13 10:12:42 */ #include < ...
- vue.nextTick()方法的使用详解
什么是Vue.nextTick()?? 定义:在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM. 所以就衍生出了这个获取更新后的DOM的Vue方法 ...
- (转)idea创建Maven项目时Maven插件内看不到mybatis-generator
转载地址:https://blog.csdn.net/yytwiligt/article/details/81010360 创建Maven项目时插件配置添加了mybatis-generator但是右侧 ...
- 创建testng.xml文件
简单介绍 运行TestNG测试脚本有两种方式:一种是直接通过IDE运行(例如使用eclipse中的“Run TestNG tests”),另一种是从命令行运行(通过使用xml配置文件).当我们想执行某 ...
- Ant风格路径表达式
ANT通配符有三种: ? 匹配任何单字符 * 匹配0或者任意数量的字符 ** 匹配0或者更多的目录 举例: /project/*.a 匹配项目根路径下所有在project路径下的.a文件 /proje ...
- Educational Codeforces Round 63 (Rated for Div. 2) D dp(最大连续子序列)
https://codeforces.com/contest/1155/problem/D 题意 一个n个数的数组\(a[i]\),可以选择连续的一段乘x,求最大连续子序列的值 题解 错误思路:贪心, ...