当前位置:网站首页>为什么会没有内存了呢
为什么会没有内存了呢
2022-08-11 07:25:00 【学习微站】
为什么会没有内存了呢?原因不外乎有两点:
1)分配的少了:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少。
2)应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。
内存泄露:申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这段内存就泄露了,因为申请者不用了,而又不能被虚拟机分配给别人用。
内存溢出:申请的内存超出了JVM能提供的内存大小,此时称之为溢出。
1、当发生OOM时,服务已基本不可用,并且会出现以下明显报错信息。
2.JVM启动参数设置 -XX:+HeapDumpOnOutOfMemoryError 当发生OOM时自动输出堆的内存快照
-XX:HeapDumpPath=/tmp 输出目录将dump文件java_pid1.hprof拷到本地如果忘记设置启动参数,也可以通过命令行获取dump文件使用JDK自带的jmap命令:jmap -dump:format=b,file=heap.bin
3、本地先安装eclipse, 再安装MAT(Memory Analyzer Tool)工具,使用mat工具打开java_pid1.hprof文件,根据mat可以快速定位问题
预防
1、根据业务合理设置java内存大小,以及不定时查看业务运行时内存使用情况, 及时调整内存大小。
2、在写代码时,应该有意识避免写查询大对象sql。
3、针对循环业务要有意识避免内存不能释放进而导致OOM。
边栏推荐
- 1091 N-Defensive Number (15 points)
- 动态代理学习
- 1036 跟奥巴马一起编程 (15 分)
- Pytorch模型转ONNX模型
- 为什么我使用C#操作MySQL进行中文查询失败
- 1036 Programming with Obama (15 points)
- 流式结构化数据计算语言的进化与新选择
- 【LaTex-错误和异常】\verb ended by end of line.原因是因为闭合边界符没有在\verb命令所属行中出现;\verb命令的正确和错误用法、verbatim环境的用法
- Two state forms of Service
- 【Pytorch】nn.ReLU(inplace=True)
猜你喜欢
随机推荐
详述MIMIC 的ICU患者检测时间信息表(十六)
The most complete documentation on Excel's implementation of grouped summation
redis operation
cdc连sqlserver异常对象可能有无法序列化的字段 有没有大佬看得懂的 帮忙解答一下
租房小程序
6月各手机银行活跃用户较快增长,创半年新高
欢迎加入sumarua网络安全交流社区
2.1-梯度下降
leetcode:69. x 的平方根
4.1-支持向量机
JUC并发编程
Write a resume like this, easy to get the interviewer
oracle19c does not support real-time synchronization parameters, do you guys have any good solutions?
js根据当天获取前几天的日期
语音信号处理:预处理【预加重、分帧、加窗】
查找最新人员工资和上上次人员工资的变动情况
1076 Wifi密码 (15 分)
1081 检查密码 (15 分)
Distributed Lock-Redission - Cache Consistency Solution
【LeetCode每日一题】——682.棒球比赛