当前位置: 首页 > news >正文

JVM系列之OOM观测准备

       OOM, 全称 “Out Of Memory”,即内存用完的意思。JVM 因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时(可分配内存大于需要分配的内存), 就会抛出 java.lang.OutOfMemoryError。在实际的生产应用中,一旦出现OOM,很可能应用面临崩溃,服务器CPU资源被消耗尽,这是非常可怕的事。

  

      jvisualvm(Java VisualVM),能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈,是JDK提供非常好用的可视化图形观察内存情况的工具。

想通过jvisualvm远程观测虚拟机的内存情况,可以通过在JVM参数配置加上以下配置(生产不建议配)

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=xxxport -Dcom.sun.management.jmxremote.ssl=false    - Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=xxxip

参数解释如下:

-Dcom.sun.management.jmxremote   添加一个jmx远程连接属性
-Dcom.sun.management.jmxremote.port=xxxport  指定连接的应用端口号
-Dcom.sun.management.jmxremote.authenticate=false 是否启用验证
-Dcom.sun.management.jmxremote.ssl=false 是否启用ssl
-Djava.net.preferIPv4Stack=true 是否优先使用ipv4
-Djava.rmi.server.hostname=xxxip 指定远程主机的ip地址

在jdk的bin目录下双击jvisualvm,远程主机添加远程主机,然后添加JMX连接,使用安全凭证登录,即可远程观察JVM的运行情况,在压测或者复现生产问题故障十分有效。

连接上去,可以看到一个健康的Java应用的内存回收折线图。

我们还可以通过jstat工具来查看应用的回收情况。jstat -gcutil xxx 3s  每三秒输出xxx(进程号)内存回收情况。这个可以在生产在线环境查看,对判断应用健康很有帮助。

S0:幸存1区当前使用比例

S1:幸存2区当前使用比例

E:伊甸园区使用比例

O:老年代使用比例

M:元数据区使用比例

CCS:压缩使用比例

YGC:年轻代垃圾回收次数

FGC:老年代垃圾回收次数

FGCT:老年代垃圾回收消耗时间

GCT:垃圾回收消耗总时间

从上图可以看出,老年代频繁回收,3秒已经进行了好几次fullGC,且老年代做垃圾回收并没有释放多少内存,即内存溢出了,CPU基本都在忙着做垃圾回收,说明已经OOM了。下图通过top命令可以看到第一个进程CPU飙升,它正是此我们监测的Java应用正上演着OOM,应用已不能正常处理业务。


http://www.mrgr.cn/news/78152.html

相关文章:

  • 计算机网络八股整理(一)
  • 微软Ignite 2024:建立一个Agentic世界!
  • 计算机网络谢希仁第七章课后题【背诵版本】
  • World of Warcraft /script SetRaidTarget(“target“, n, ““) n=8,7,6,5,4,3,2,1,0
  • ES 和Kibana-v2 带用户登录验证
  • 大数据实战之Zookeeper集群
  • 蓝桥杯练习题
  • c++学习:json库例子
  • 【C语言】关于 JavaScript 与 C语言在函数嵌套定义方面的差异探讨
  • 【2024】前端学习笔记19-ref和reactive使用
  • 技术文档,they are my collection!
  • 代码美学:MATLAB制作渐变色
  • 【消息序列】详解(7):剖析回环模式--设备测试的核心利器
  • Http 请求协议
  • 计算机毕业设计Python+大模型美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
  • Linux -日志 | 线程池 | 线程安全 | 死锁
  • 【论文笔记】Number it: Temporal Grounding Videos like Flipping Manga
  • Springboot下导入导出excel
  • 【Google Cloud】Private Service Connect 托管式服务
  • Redis常见面试题总结(上)
  • JS小模块练习
  • CSS笔记(一)炉石传说卡牌设计1
  • HTML详解(1)
  • 七、Kubernetes持久化存储-Volume-emptyDir-HostPath-NFS
  • PyTorch基础4
  • C语言-数学基础问题