jvisualVM分析jvm内存使用快照dump

服务发生内存溢出,就需要查看服务器上Java服务的jvm堆内存使用情况,可以使用dump命令生成dump文件,然后下载到本地,然后使用jvisualVM工具打开,即可实现可视化分析。

生成dump文件常用的两种方式:

第一种:使用命令直接生成。

第二种:java -jar启动服务的时候添加dump参数,服务发生内存溢出时自动生成。

目录

1、使用命令直接生成堆dump文件

2、内存溢出发生时自动生成dump文件

3、使用jvisualVM工具打开dump文件


1、使用命令直接生成堆dump文件

发送内存溢出时,可以先使用命令生成dump文件后再重启服务。

登录虚机,执行以下jamp命令

# 替换<pid>为Java进程的ID,file:输出文件名为heap.hprof,可自定义路径
jmap -dump:format=b,file=heap.hprof <pid>

下载到本地。

2、内存溢出发生时自动生成dump文件

java -jar启动服务的时候添加dump参数,服务发生内存溢出时自动生成dump文件。

-XX:+HeapDumpOnOutOfMemoryError 当OutOfMemoryError发生时生成dump文件

-XX:HeapDumpPath=生成dump文件的存储目录,如不指定默认生成在jar所在目录,目录一定要存在,否则生成失败。

# 当OutOfMemoryError发生时生成dump文件,-XX:HeapDumpPath指定生成后的文件存储路径
java -jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/test/dump/ -Xms64m -Xmx64m  demo-0.0.1-SNAPSHOT.jar

3、使用jvisualVM工具打开dump文件

jvisualVM位置,jdk安装目录下的bin目录下,例:E:\java\jdk\jdk1.8.0_333\bin\jvisualvm.exe,

启动jvisualVM后选择打开dump文件

可以看到服务中占有内存比较多的类

这里是用了一个demo做测试,通过调用接口创建大量的user实例,占用大量的jvm堆内存

@RestController
public class BasicController {private Map<String,User> map_test = new HashMap<>();@RequestMapping("/add")public String add() {for (int i = 0; i < 50000; i++) {User user = new User();user.setName(UUID.randomUUID().toString());map_test.put(UUID.randomUUID().toString(),user);}return "ok";}
}

双击类跳转到试例数页面,如下

通过分析就可以知道是哪里出现的问题。

如果使用了springBootAdmin监控服务,可以直接在页面下载对应的dump文件。

spring boot admin 搭建(非常简单)_springbootadmin搭建-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6-138 大整数相加

本题要求实现一个函数,实现大整数相加运算。大整数按每4位保存在整数数组中,如果大整数位数不是4的倍数,则将保证低位都按4位一存。如“123456789”保存为1,2345,6789。 函数接口定义: int convert(char a[],int x[]); int add(int x[],int len1,int y[],int len2,int …

[react] useState的一些小细节

1.无限循环 因为setState修改是异步的,加上会触发函数重新渲染, 如果代码长这样 一秒再修改,然后重新触发setTImeout, 然后再触发,重复触发循环 如果这样呢 还是会,因为你执行又会重新渲染 2.异步修改数据 为什么修改多次还是跟不上呢? 函数传参解决 因为是异步修改 ,所以…

代码随想录算法训练营第三十六天| 435. 无重叠区间、 763.划分字母区间、56. 合并区间

435 题目&#xff1a; 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 题目链接&#xff1a;435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; …

Nacos 入门篇---服务端如何处理客户端的服务注册请求?(三)

一、引言 ok呀&#xff0c;上个章节我们讲了Nacos客户端的服务自动注册&#xff0c;今天我们来看看服务端接收到了客户端的服务注册请求&#xff0c;服务端都做了哪些事情&#xff5e; 二、目录 目录 一、引言 二、目录 三、回顾上节内容&#xff1a; 四、Nacos 服务代码入…

工作流引擎项目解析(二)

流程变量设置于获取 Activiti--流程变量_runtimeservice.setvariable-CSDN博客 Process Variables | docs.camunda.org 设置 启动时设置任务完成时设置runtimeService.setvars…()taskservice.setvars…() ProcessEngine processEngine ProcessEngines.getDefaultProcessEn…

python项目练习——24、线旅游预订系统

用户管理功能: 用户注册:用户可以填写用户名和密码进行注册。用户登录:注册过的用户可以使用用户名和密码登录系统。用户资料管理:用户可以查看和编辑自己的个人资料。旅游产品管理功能: 产品列表展示:展示可预订的旅游产品列表。产品搜索:用户可以根据关键字、目的地、…

Nginx 基础应用实战 04 在公网配置配置HTTPS

Nginx 基础应用实战 04 在公网配置配置HTTPS Nginx配置 server {listen 443 ssl;server_name aa.abc.com;ssl_certificate /data/cert/server.crt;ssl_certificate_key /data/cert/server.key;}免费签名 https://freessl.cn 阿里云 腾讯云 Nginx配置 serve…

Springboot整合nacos报错无法连接nacos

报错信息&#xff1a;Nacos com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING 关于这个报错的原因有很多&#xff1a;如Nacos未启动、网络问题、配置问题、版本不兼容问题等&#xff0c;我的报错原因主要是版本不兼容。 下面…

5.9 mybatis之callSettersOnNulls作用

文章目录 1. 当callSettersOnNullstrue时2. 当callSettersOnNullsfalse时 在mybatis的settings配置参数中有个callSettersOnNulls参数&#xff0c;官方解释为&#xff1a;指定当结果集中值为 null 的时候是否调用映射对象的 setter&#xff08;map 对象时为 put&#xff09;方法…

PostgreSQL入门到实战-第三十弹

PostgreSQL入门到实战 PostgreSQL教程网站官网地址PostgreSQL概述更新计划 PostgreSQL教程网站 https://www.postgresqltutorial.com/ 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreS…

【系统分析师】计算机网络

文章目录 1、TCP/IP协议族1.1 DHCP协议1.2 DNS协议1.3网络故障诊断 2、网路规划与设计2.1逻辑网络设计2.2物理网络设计2.3 分层设计 3、网络接入3.1 接入方式3.2 IPv6地址 4、综合布线技术5、物联网5.1物联网概念与分层5.2 物联网关键技术 6、云计算7、网络存储技术&#xff08…

neo4j使用详解(结尾、neo4j的java driver使用模板及工具类——<可用于生产>)

Neo4j系列导航: neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1. 简介 本文主要是java使用neo4j driver操作neo4j的模板项目及非常有用的工具类,主要包括: 图…

Vector - CAPL - XCP介绍_02

前面我们介绍了关于使用vector XCP License后&#xff0c;通过CAPL对XCP协议进行连接、断开和获取当前XCP连接状态的函数&#xff0c;本篇文章不做过多的其他赘述&#xff0c;我们继续介绍CAPL控制XCP相关的其他函数。 目录 xcpActivate 代码示例 xcpDeactivate xcpActiva…

数据库-Redis(9)

目录 41.AOF重写日志时,有新数据写入怎么办呢? 42.主线程Fork出子进程是如何复制内存数据的?

LeetCode617:合并二叉树

题目描述 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重…

8:系统开发基础--8.1:软件工程概述、8.2:软件开发方法 、8.3:软件开发模型、8.4:系统分析

转上一节&#xff1a; http://t.csdnimg.cn/G7lfmhttp://t.csdnimg.cn/G7lfm 课程内容提要&#xff1a; 8&#xff1a;知识点考点详解 8.1&#xff1a;软件工程概述 1.软件的生存周期 2.软件过程改进—CMM Capability Maturity Model能力成熟度模型 3.软件过程改进—CMMI—…

万字长文:Phoenix面试题及参考答案(持续更新)

目录 描述一下Phoenix的架构及其组件。 解释Phoenix如何处理SQL查询并将其转换为HBase操作。

2024.4.14

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<stdbool.h>/*/*给你一个整数数组 nums 。 如果一组数字(i, j) 满足 nums[i] nums[j] 且 i < j &#xff0c;就可以认为这是一组 好数对 。 返回好数对的数目。int numId…

vmware安装win10及ubuntu

安装win10 新建一个文件夹 选择刚才创建的文件夹 选择需要保存文件的位置&#xff0c;还是选择刚才创建的文件夹 选择自定义硬件 选择下载的win10镜像iso文件,导入后&#xff0c;点击完成即可 接下来就是下一步 没有此电脑&#xff0c;可以点击个性化-》主题-》桌面设置…

SecureCRT日志记录的7个经典配置记录与14个环境变量(%Y-%M-%D_%H_%S_session.log %t )

每次更换电脑、主机或者环境都需要配置一遍SecureCRT的参数。感觉就最近十年都已经设置过上百次了。其实设置没什么特别的&#xff0c;只是经过不断地打磨&#xff0c;主打的就是一个经济实用。经常忘记&#xff0c;特此记录。 配置方式 建议直接配置默认session&#xff1a;…