1、当程序没有内存溢出OOM(out of memory)时

注意:jmap需要依赖jdk的devel包
查询class内存占用命令:

# jmap  -histo  pid  展示class类的堆信息

先用top命令查询程序的pid

# jmap  -histo   878193

可以看到该项目内存的占用情况,就可以分析出是哪里的问题了

注意:这里的[B 和 [C的表示的是数组,[[B 是byte的二维数组

[Z = boolean
[B = byte
[S = short
[I = int
[J = long
[F = float
[D = double
[C = char
[L = any non-primitives(Object)

jmap其他命令:

# jmap  -heap   pid  查询pid的整体堆信息
# jmap  -histo:live  pid>a.log  查询heap中所有生存的对象堆信息,并保存到文件中注意: 这个命令执行,JVM会先触发gc,然后再统计信息。
# jmap  -dump:live,format=b,file=a.log pid   内存信息dump到a.log文件中注意: jmap -dump 会将整个heap导出,如果heap很大的话,会比较耗时,且会暂停应用,慎用

2、当程序已经访问不了时,需要导出dump日志是要工具分析

# java -XX:+PrintFlagsFinal -version

通过这个命令看jdk是否开启开启堆内存溢出时,自动导出dump文件

HeapDumpOnOutOfMemoryError     堆内存溢出时自动导出开关,默认false
HeapDumpPath                   堆内存溢出时dump文件导出路径


开启方法:
1、配置方法
在JAVA_OPTIONS变量中增加

-XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=${目录}。
例如:export JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn682M -XX:MaxPermSize=96M"

2、参数说明
(1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。
(2)-XX:HeapDumpPath={目录} 参数表示生成DUMP文件的路径,
也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。
如果不指定文件名,默认为:java_pid_date_time_heapDump.hprof。

查看dump文件工具
MAT、visualVM等都可以的

如何排查JVM内存占用过高相关推荐

  1. 【jvm内存占用过高分析】

    [jvm内存占用过高分析] 1.首先进入服务容器内 //获取服务容器名称 kubectl get pods |grep <服务名称>// 进入容器内部 kubectl -it exec & ...

  2. java cms cpu占用率_cpu使用率过高和jvm old占用过高排查过程

    今天断断续续的收到管理平台的异常报警,cpu占用过高和jvm old占用过高,这个时候赶紧去排查原因,下面记录了我的排查过程,可能里面还有不正确的地方,欢迎各位大佬指正,也欢迎大家关于类似的案例一起交 ...

  3. 一次jvm导致线上内存占用过高问题定位

    背景:8G物理内存,8核CPU,jvm使用的G1垃圾回收器. 问题:线上内存占用告警,内存占用超过85%,且现象一直持续. 分析 看一下jvm启动参数配置: -Xms6144m -Xmx6144m - ...

  4. Linux系统内存占用过高排查方法

    以下以Ubuntu系统为例,内存占用过高可能是因为某个进程或程序占用了过多的内存,您可以按照以下步骤进行排查: 以上是一些基本的排查步骤,它们可以帮助您确定内存占用过高的原因,并采取相应的措施解决问题 ...

  5. UE 手游在 iOS 平台运行时内存占用太高?试试这样着手优化

    性能优化,对游戏开发来说是一个需要不断钻研的课题,性能越好,游戏才会运行的更加顺畅,玩家的体验感才会更好.腾讯游戏学院专家.游戏客户端开发 Leonn,将和大家分享 UE 手游在 iOS 平台上的内存 ...

  6. 一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?

    摘要:该项目是DAYU平台的数据开发(DLF),数据开发中一个重要的功能就是ETL(数据清洗).ETL由源端到目的端,中间的业务逻辑一般由用户自己编写的SQL模板实现,velocity是其中涉及的一种 ...

  7. Spring cloud开发内存占用过高解决方法

    https://blog.csdn.net/wanhuiguizong/article/details/79289986 版权声明:本文为博主原创文章,转载请声明文章来源和原文链接. https:// ...

  8. 无盘服务器内存问题,无盘服务器内存占用过高

    无盘服务器内存占用过高 内容精选 换一换 Windows操作系统云服务器蓝屏,如图1所示.使用了来源不明的第三方软件.CPU占用过高导致.因为误操作或者病毒引起的系统文件.注册表损坏.操作系统在蓝屏的 ...

  9. node启动之后内存占用过高解决方案

    小编一开始也是一脸懵,这是为啥呢,一个空的node项目启动之后占用内存竟然有400多M 查看项目占用cpu以及内存详情命令 docker stats | grep node 经过小编坚持不懈的找度年终 ...

最新文章

  1. struts2学习笔记--线程安全问题小结
  2. python图片-利用python进行识别相似图片(一)
  3. Linux时间子系统之三:时间的维护者:timekeeper
  4. 【编译原理】构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 8.)(笔记)一元运算符正负(+,-)
  5. 说下网鼎杯第四场的双色块
  6. 地址栏地址 获取_直播源获取工具,支持斗鱼、虎牙、B站、企鹅电竞、YY、抖音、西瓜直播!...
  7. 视频光端机音频出现噪音是为何?
  8. Asp.net MVC3.0 基于不同的角色显示不同的菜单
  9. Debian 系统安装 Nagios 服务器监控端
  10. 时尚高端电商网页设计素材
  11. centos安装php
  12. SpringBoot根据包名进行区分使用多数据源
  13. 数据结构视频教程哪个好
  14. SQL语法整理(五)-视图
  15. 论文查重 降重复度?如何进行毕业论文查重--总结贴
  16. break 通过自定义标签跳到指定位置
  17. ffmpeg 查看bayer rg8 \ bg8 像素格式图片方法
  18. iPhone 14 电池耗电怎么样?iPhone 14和13比对那个续航好?
  19. Asp.Net 汉字转(拼音)
  20. 二级c语言 真题,全国计算机二级c语言历年真题完整版.doc

热门文章

  1. 在阿里云或腾讯云配置微信小程序
  2. 新装修的房子怎样知道含不含有甲醛?斐讯悟空M1告诉你
  3. 谈谈技术人的英语学习
  4. stm32中断源有哪些_STM32常见问题汇总
  5. 方文室随记12柳永13秦朝
  6. html分页自动加载,AutoPagerize插件,网页自动翻页插件,自动加载分页网站
  7. c fread 快读 详解_万事开头难,手把手教你搭建Appium自动化测试环境,实践案例详解...
  8. 魔力宝贝登录一直服务器无响应,魔力宝贝归来怎么提升战力?
  9. 正点原子嵌入式linux视频教程,正点原子嵌入式开发完整全套视频教程
  10. 生信基础(三)——统计分析工具R语言