文章目录

  • 1、查看内存占用高的进程
  • 2、查看对象个数和占用内存大小
  • 3、导出内存镜像
  • 4、安装独立版本的Memory Analyzer工具
  • 5、使用MAT工具进行分析
  • 6、注意

以下代码没有特殊说明,都是指终端命令行操作

1、查看内存占用高的进程

top

2、查看对象个数和占用内存大小

jmap -histo 624


可以看到程序中各个对象所占用内存的情况,根据占用字节数大小降序显示,这里只能看出哪些对象占用内存高,但是还不能具体定位到问题代码,需要进一步排查。
有个自定义的类Animal,个数和占用内存比较高,是重点怀疑对象。
图中一些特殊字符的含义如下:

符号 含义
[C 表示char[],一般与String对象相关,因为String其实就是基于char数组实现的
[S 表示short[]
[I 表示int[]
[B 表示byte[]
[Z 表示boolean[]
[J 表示long[]
[F 表示float[]
[D 表示double[]
[II 表示int[][]
[Ljava.lang.Object java.lang.Object类型的数组
[Ljava.lang.String java.lang.String类型的数组

3、导出内存镜像

jmap -dump:format=b,file=testDump.hprof 624

4、安装独立版本的Memory Analyzer工具

下载链接:
http://www.eclipse.org/mat/downloads.php

5、使用MAT工具进行分析

  1. 打开dump文件

  2. 查看对象个数和占用内存数

  3. 查看每个线程的内存使用情况

6、注意

当dump文件过大时,Memory Analyzer工具会提示解析出错

An internal error occurred during: "Parsing heap dump from '/Users/mac/cece/testDump.hprof'".
Java heap space

需要找到配置文件MemoryAnalyzer.ini,修改-Xmx的配置大小,如:

-startup
../Eclipse/plugins/org.eclipse.equinox.launcher_1.6.200.v20210416-2027.jar
--launcher.library
../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.2.200.v20210527-0259
-vmargs
-Xmx4g
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XstartOnFirstThread

-Xmx配置的默认大小为1024m

java服务内存占用过高相关推荐

  1. 运维:你们 JAVA 服务内存占用太高,还只增不减!告警了,快来接锅

    先点赞再看,养成好习惯 某天,运维老哥突然找我:"你们的某 JAVA 服务内存占用太高,告警了!GC 后也没释放,内存只增不减,是不是内存泄漏了!" 然后我赶紧看了下监控,一切正常 ...

  2. java程序内存占用过高问题排查

    一.现象 收到线上机器报警(内存使用过高),对报警的机器节点重启后恢复正常,搁天后新的节点又开始报警: 二.排查 直接对线上机器执行dump命令,由于线上机器还有流量在持续请求,因此dump时间比较长 ...

  3. java内存过高_Java应用问题定位系列——内存占用过高

    定位Java程序内存使用过高或者内存泄漏的问题跟CPU也类似,一般可以分为以下3个步骤: 定位进程 定位线程 定位具体方法(代码部分) 一.定位进程 通过top -c(然后按Shift+M按内存排序) ...

  4. Java微服务内存占用分析

    一.Java 进程中有哪些组件会占用内存? 通过 Native Memory Tracking 可以观察到有以下 JVM 组件.在命令行加上-XX:NativeMemoryTracking=summa ...

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

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

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

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

  7. win10内存占用过高解决方案

    用win10,感觉电脑太卡,内存占用过高,写程序啥的,动不动就飙升到八九十,泪目 搜寻后,整理出来解决方案,供大家参考: 1. 关闭服务启动项 运行msconfig--服务--隐藏Microsoft服 ...

  8. Linux java进程CPU占用过高解决方案

    总目录 一.前言: 二.模拟java程序CPU过高 1 修改代码为死循环 2 部署在linux上 访问该接口 根据top命令查看CPU参数 3 通过ps命令查看这个程序的线程信息,tid代码线程ID, ...

  9. 如何占用计算机内存,电脑内存占用太高怎么办 教你电脑内存不够用解决方法...

    现在很多白领买电脑,都会优先考虑电脑的续航和便捷,因为他们买电脑主要也就办办公,看看电影,又不玩大型游戏,所以高性能对他们来说也没什么必要. 笔记本电脑 但现在市面上续航久,便携性比较高的Intel电 ...

最新文章

  1. 绩效C,看不到希望...
  2. Andriod anim translate中的属性介绍
  3. jQuery获取时间,一位数则补零
  4. ElasticSearch第二天
  5. android 电话 快捷键,Android studio开发常用快捷键详解
  6. Python项目实践:基本统计值计算
  7. 结合ENVI与ArcMAP的NC数据处理(均值、最大最小值等)心得记录
  8. Oracle 11g R1/R2 真正应用集群(RAC)基础
  9. 键盘皇者 RealForce 104Pro独家评测
  10. HFSS - 双频微带天线设计与仿真
  11. MyEclipse 注册码
  12. oracle加字段卡住,oracle添加字段引起的问题
  13. 萝卜小姐-Handler之系列sendMessage学习
  14. Source Insight 4.0安装破解及简单使用
  15. Java P5713 【深基3.例5】洛谷团队系统 洛谷入门题
  16. LeetCode0704-二分查找
  17. vue---隐藏登录页面导航栏,登录成功跳转页面出现导航栏
  18. 你们公司有职业通路图吗
  19. Qt uchar *转 Hex的QString方法代码
  20. 最令我。。。。的一首诗

热门文章

  1. java 打印 日历 详细 注解_java 打印日历
  2. Java学习之旅-04
  3. 研究生项目狗自救指南
  4. matlab搭建多径模型,基于MATLAB的无线多径信道建模与仿真分析.docx
  5. 正点原子mysql_正点原子战舰开发板硬件原理图与PCB
  6. 可汗学院计算机课程都有哪些,要录制可汗学院教学视频你需要哪些硬件和软件?...
  7. dbk-5/Empf/CEE/O/M30技术文章dbk-5/Sender/M30/k1
  8. mysql中vlookup函数_Vlookup + MySql 数据高效迁移
  9. Unity简单2D游戏开发
  10. CTP程序化交易入门系列之二:API基本架构及初始化