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

生成和查看dump文件

在日常开发中,即使代码写得有多谨慎,免不了还是会发生各种意外的事件,比如服务器内存突然飙高,又或者发生内存溢出(OOM)。当发生这种情况时,我们怎么去排查,怎么去分析原因呢?

1. 什么是dump文件?

dump文件是一个进程或者系统在某一个给定的时间的快照。
dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开。
dump文件中包含了程序运行的模块信息、线程信息、堆栈调用信息、异常信息等数据。
在服务器运行我们的Java程序时,是无法跟踪代码的,所以当发生线上事故时,dump文件就成了一个很关键的分析点。

2. 如何生成dump文件?

这里介绍两种方式:

一种是主动的
一种是被动的

方式一
主动生成dump文件。首先要查找运行的Java程序的pid。
使用top命令:
在这里插入图片描述

然后使用jmap命令生成dump文件。file后面是保存的文件名称,1246则是java程序的PID。

jmap -dump:format=b,file=/Users/zhangjiguo/dump.hprof 1246

命令中的1246是需要dump文件的java进程的pid(括号及括号中的内容要记得删掉),可以通过top命令进行获取

方式二
其实在很多时候我们是不知道何时会发生OOM,所以需要在发生OOM时自动生成dump文件。
其实很简单,只需要在启动时加上如下参数即可。HeapDumpPath表示生成dump文件保存的目录。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\tmp
我们还需要模拟出OOM错误,以此触发产生dump文件,首先写个接口:

private static Map<String, String> map = new HashMap<>();@RequestMapping("/oom")
public String oom() throws Exception {for (int i = 0; i < 100000; i++) {map.put("key" + i, "value" + i);}return "oom";
}

然后在启动时设置堆内存大小为32M。
-Xms32M -Xmx32M
因为要后台启动,并且输出日志,所以最后启动命令就是这样:

 java -Xms32M -Xmx32M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/zhangjiguo/dump.hprof  -jar auth-client-api-1.0.0.RELEASE.jar

然后请求oom的接口,查看日志,果然发生了OOM错误。
查看保存dump的目录,果然生成了对应的dump文件。

3. 如何查看dump文件?

这里我介绍使用Jprofiler,有可视化界面,功能也比较完善。

3.使用JProfiler打开
打开比较久,需耐心等待,千万不要点skip
在这里插入图片描述

4.查看Classes
在这里插入图片描述

5.查看Reference
5.1 选择一个class或者biggest object
在这里插入图片描述

5.2 Use Slected Objects
在这里插入图片描述

5.3 Incoming references
在这里插入图片描述

  • incoming references 显示这个对象被谁引用
  • outcoming references 显示这个对象引用的其他对象

6.查看
在这里插入图片描述

7.查看Graph
在这里插入图片描述

8.查看代码
在这里插入图片描述

该方法主要用来导出数据报表,可以看出,当list数量太大时,就会导致OOM

相关文章:

生成和查看dump文件

在日常开发中&#xff0c;即使代码写得有多谨慎&#xff0c;免不了还是会发生各种意外的事件&#xff0c;比如服务器内存突然飙高&#xff0c;又或者发生内存溢出(OOM)。当发生这种情况时&#xff0c;我们怎么去排查&#xff0c;怎么去分析原因呢&#xff1f; 1. 什么是dump文…...

K8S集群1.24使用docker作为容器运行时出现就绪探针间歇性异常

文章目录1. 环境介绍2. 异常信息3. 分析问题3.1 kubernetes 健康检查3.1.1 存活探针3.1.2 就绪探针3.1.3 启动探针3.2 检测方法4. 解决办法1. 环境介绍 组件版本kubernetes1.24.2docker18.03.1-cecri-docker0.2.6 2. 异常信息 最近监测到 kubernetes 集群上 calico-node Pod 运…...

士大夫身份第三方水电费第三方

package com.snmocha.snbpm.job;import org.springframework.stereotype.Component;import com.xxl.job.core.handler.annotation.XxlJob;import lombok.extern.slf4j.Slf4j;/*** Demo定时任务.* Author&#xff1a;zhoudd* Date&#xff1a;2023-01-15*/ Component Slf4j publ…...

RDO一体化部署OpenStack

RDO一体化部署OpenStack 环境准备 安装centos7 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J785hZvT-1677578418769)(C:\Users\HONOR\AppData\Roaming\Typora\typora-user-images\image-20230228171254675.png)] 使用vmware安装安装centos7&a…...

CC2530+ESP8266使用MQTT协议上传阿里云的问题

ATMQTTPUB<LinkID>,<"topic">,<"data">,<qos>,<retain>LinkID: 当前只支持 0 topic: 发布主题, 最长 64 字节 data: 发布消息, data 不能包含 \0, 请确保整条 ATMQTTPUB 不超过 AT 指令的最大长度限制 qos: 发布服务质量, 参…...

Java基础:爬虫

1.本地爬虫 Pattern:表示正则表达式 Matcher:文本匹配器&#xff0c;作用按照正则表达式的规则去读取字符串&#xff0c;从头开始读取。在大串中去找符合匹配规则的子串。 1.2.获取Pattern对象 通过Pattern p Pattern.compile("正则表达式");获得 1.3.获取Matc…...

纯手动搭建大数据集群架构_记录008_搭建Hbase集群_配置集群高可用---大数据之Hadoop3.x工作笔记0169

首先准备安装包 然后将安装包分发到集群的其他机器上去 然后因为运行hbase需要zookeeper支持,所以这里首先要去,启动zk 走到/opt/module/hadoop-3.1.3/bin/zk.sh 然后 zk.sh start 启动一下,可以看到启动了已经 然后zk.sh status 可以看zookeeper的状态 然后我们再去启动一下…...

Linux系统认知——驱动认知

文章目录一、驱动相关概念1.什么是驱动2.被驱动设备分类3.设备文件的主设备号和次设备号4.设备驱动整体调用过程二、基于框架编写驱动代码1.驱动代码框架2.驱动代码的编译和测试三、树莓派I/O口驱动的编写1.微机的总线地址、物理地址、虚拟地址介绍2.通过树莓派芯片手册确定需要…...

Spring boot装载模板代码并自动运行

Spring boot装载模板代码涉及的子模块及准备省心Clickhouse批量写JSON多层级数据自动映射值模板代码生成及移交控制权给Spring IOC涉及的子模块及准备 最近比较有空&#xff0c;之前一直好奇&#xff0c;提交到线上考试的代码是如何执行测试的&#xff0c;在实现了基础的demo后…...

全国领先——液力悬浮仿生型人工心脏上市后在同济医院成功植入

2023年2月22日&#xff0c;华中科技大学同济医学院附属同济医院&#xff08;同济医院&#xff09;心脏大血管外科团队举办了一场气氛热烈的小规模庆祝活动&#xff0c;魏翔主任、程才副主任、王星宇副主任医师和李师亮医师到场&#xff0c;为终末期心衰患者黄先生“庆生”&…...

基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…...

云原生周刊:开源漏洞仍然是开发人员面临的挑战 | 2023.2.27

Synopsys 发布了最新一期的开源安全年度报告&#xff0c;开源安全和风险分析 (OSSRA)。这份报告由Synopsys 网络安全研究中心 (CyRC)创建&#xff0c;着眼于 Black Duck 审计服务团队进行的 1,700 多次商业代码库审计的结果。 自 2019 年以来&#xff0c;OSSRA 所有 17 家企业…...

Docker学习总结

1、镜像操作 1.1 拉取、查看镜像 步骤一&#xff1a; 首先去镜像仓库搜索nginx镜像&#xff0c;比如[DockerHub]( Docker Hub Container Image Library | App Containerization ) : 步骤二&#xff1a; 根据查看到的镜像名称&#xff0c;拉取自己需要的镜像 通过命令&…...

Android 9.0系统源码_通知服务(三)应用发送状态栏通知的流程

前言 应用发送一个显示在状态栏上的通知&#xff0c;对于移动设备来说是很常见的一种功能需求&#xff0c;本篇文章我们将会结合Android9.0系统源码具体来分析一下&#xff0c;应用调用notificationManager触发通知栏通知功能的源码流程。 一、应用触发状态栏通知 应用可以通…...

python中的序列——笔记

一、介绍 ABC语言时一个致力于为初学者设计编程环境的长达十年的研究项目。 Python也从ABC那里继承了用统一的风格去处理序列数据这一特点。不管是哪种数据结构&#xff0c;字符串、列表、字节序列、数组、XML元素&#xff0c;抑或是数据库查询结果&#xff0c;它们都共用一套…...

taobao.user.seller.get( 查询卖家用户信息 )

&#xffe5;开放平台基础API必须用户授权 查询卖家用户信息&#xff08;只能查询有店铺的用户&#xff09; 只能卖家类应用调用。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 点击获取key和secret请求示例…...

WebRTC Qos策略

1.WebRTC 用于提升 QoS 的方法&#xff1a;NACK、FEC、SVC、JitterBuffer、IDR Request、PACER、Sender Side BWE、VFR&#xff08;动态帧率调整策略&#xff09;https://blog.csdn.net/CrystalShaw/article/details/80432267丢包重传NACK&#xff1a;一种通知技术&#xff0c;…...

Mysql数据查询

文章目录1 group by子句2 回溯统计3 having子句1 group by子句 group by子句**&#xff1a;分组统计&#xff0c;根据某个字段将所有的结果分类&#xff0c;并进行数据统计分析 分组的目的不是为了显示数据&#xff0c;一定是为了统计数据group by子句一定是出现在where子句之…...

Kafka入门(五)

下面聊聊Kafka常用命令 1、Topic管理命令 以topic&#xff1a;test_1为例 1.1、创建topic ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 3 --topic test_1参数说明&#xff1a; –bootstrap-server&#xff1a;…...

如何快速在windows系统中切换node.js版本

前言 最近在同时维护公司的两个项目&#xff0c;一个是新项目&#xff0c;另一个是老项目&#xff0c;二者所依赖的node版本是不一致的。 这就导致我在切换项目的时候必须重新安装对应版本的 node.js&#xff0c;否则就会报各种神马错误。 但这一卸一装可着实烦死个银&#xf…...

设计模式-单例模式(java)

单例是一种常用的设计模式&#xff0c;它的目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。在Java编程语言中&#xff0c;实现单例有多种方法&#xff0c;本篇文章将介绍其中的两种实现方式。 方式一&#xff1a;饿汉式单例模式 饿汉式单例模式是最简单的实…...

Revit中复合墙图层的规则和CAD识别翻模墙

一、Revit中用于指定复合墙图层的规则&#xff0c;具体内容? 在编辑复合墙的结构时&#xff0c;请使用“指定图层”工具将“编辑部件”对话框中的行指定给图层或预览窗格中的区域&#xff0c;并遵循这些原则。 在预览窗格中&#xff0c;样本墙的各个行必须保持从左到右的顺序显…...

【DL】Paddle BML Codelab环境使用说明 - 知识点目录

《Paddle BML Codelab环境使用说明》 1. 编辑区 Code Cell 1.1 Code Cell 操作 Magic关键字/魔术命令 Magic命令含义%timeit测试单行语句的执行时间%%timeit测试代码块的执行时间%matplotlib inline显示matplotlib生成的图形%run调用外部python脚本%pdb 调试程序%pwd 查看当…...

python正则表达式处理文本-re模块

python正则表达式处理文本-re模块 1.概述 正则表达式通常用于含有大量文本处理的应用当中。例如&#xff0c;它们经常用作开发者使用的文本编辑程序的搜索模式&#xff0c;包括 vi&#xff0c;emacs 和现代集成开发环境。它们也是 Unix 命令行工具的组成部分&#xff0c;例如…...

换了固态硬盘需要重装系统吗?教你如何实现不重装系统!

电脑大家都用过嘛&#xff0c;如果您的计算机装的还是机械硬盘&#xff0c;想必阁下肯定是修身养性的高手&#xff0c;因为在这个浮躁的社会中&#xff0c;是很少有人能够忍受5分钟甚至更久的开机时间的&#xff0c;不仅开机慢&#xff0c;应用程序的响应速度也很慢&#xff0c…...

网上医疗预约挂号系统

技术&#xff1a;Java、JSP等摘要&#xff1a;网上医疗预约挂号系统是主要是对居民的保健、护理、疾病预防等健康信息实行有效的预约挂号管理。医疗机构为居民建立完整的健康档案&#xff0c;安排体检以及实施免疫等预防措施。而基于Web的远程保健平台以网上医疗预约挂号系统为…...

专题:一看就会的C++类模板讲解 (1)

目录 一.类模板的作用 二.类模板的定义&#xff1a; 三.类模板的声明格式&#xff1a; 四.类模板对象 五.再举一个例子 一.类模板的作用 面向对象的程序设计编程实践中&#xff0c;我们可能会面临这样的问题&#xff1a;要实现比较两个数的大小。明明比较两个数的方法都一样…...

什么是“奥卡姆剃刀”,如何用“奥卡姆剃刀”解决复杂问题?复杂问题简单化

什么是“奥卡姆剃刀”&#xff0c;如何用“奥卡姆剃刀”解决复杂问题&#xff1f;复杂问题简单化问题什么是“奥卡姆剃刀”?如何使用“奥卡姆剃刀”解决问题复杂问题简单化“汉隆剃刀”小结问题 假设你在夜空中看到一颗闪闪发光的「不明飞行物」&#xff0c;你认为这会是什么呢…...

角谷定理(递归)

已知有角谷定理&#xff1a; 输入一个自然数&#xff0c;若为偶数&#xff0c;则把它除以2&#xff0c;若为奇数&#xff0c;则把它乘以3加1。经过如此有限次运算后&#xff0c;总可以得到自然数值1。求经过多少次可得到自然数1。如&#xff1a;例如数据22的变化过程&#xff…...

数学小课堂:微积分复盘(高等数学本质上是对趋势的动态描述,是对各种相关性抽象的表述。)

文章目录 引言I 复盘1.1 概念和表述1.2 现实与虚构1.3 有穷和无穷1.4 静态和动态1.5 直觉和逻辑II 通过数学逻辑,理解人生。2.1 精明与聪明2.2 朋友和理性的对手2.3 攒钱和赚钱2.4 荣誉和财富引言 高等数学本质上是对趋势的动态描述,是对各种相关性抽象的表述。 I 复盘 1.…...

正规的投资公司融资流程/搜索引擎优化不包括

题目&#xff1a; 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串&#xff0c;在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在&#xff0c;则返回 -1。 示例 1: 输入: haystack "hello", needle "ll&q…...

专业企业网站建设多少钱/网站服务器查询工具

OkHttp介绍 Android系统提供了两种HTTP通信类&#xff0c;HttpURLConnection和HttpClient&#xff0c;HttpURLConnection相对来说比HttpClient难用&#xff0c;google自从2.3版本之后一直推荐使用HttpURLConnection&#xff0c;并且在6.0版本的sdk中直接删掉了HttpClient类。 但…...

wordpress4.7.5中文版/优化seo可以从以下几个方面进行

1.JVM运行区域内存划分 2.各内存区域详细介绍 2.1 程序计数器 程序计数器是一块很小的内存区域&#xff0c;它作为前线程所执行的字节码的行号指示器&#xff0c;指向当前class文件的执行代码的行数。字节码解释器工作时&#xff0c;通过改变程序计数器的数值&#xff0c;来选取…...

摄影网站建设文案/网站设计用什么软件

文章目录图论&#xff08;Graph Theory&#xff09;图的分类图的相关概念1. 图的连通性2. 简单图&#xff08;Simple Graph&#xff09;图的表示1. 邻接矩阵2. 邻接表&#xff08;Adjacency Lists&#xff09;3. 使用场景邻接表和邻接矩阵的具体实现1. 定义以及添加边2. 遍历邻…...

上海建设人才网站/网站建设seo优化培训

php将金额数字转化为中文大写 /*** Undocumented function*数字金额转换成中文大写金额的函数*String Int $num 要转换的小写数字或小写字符串*return 大写字母*小数位为两位**/function num_to_rmb($num){$c1 "零壹贰叁肆伍陆柒捌玖";$c2 "分角元拾佰仟万拾…...

做捕鱼网站/建站seo推广

将创建一个 .NET Core 控制台应用&#xff0c;该应用使用 Entity Framework Core 对 SQLite 数据库执行数据访问。 先决条件 .NET Core SDK Visual Studio 2019版本16.3或更高版本 .NET Core跨平台开发 .NET 6.0运行时&#xff08;LTS&#xff09;和.NET Core 3.1运行时&am…...