【JVM】内存快照分析工具Jprofiler

2023-11-10

OOM了,怎么办?

最好能够快速找到代码第几行出错:

内存快照分析工具:MAT,Jprofiler

MAT、Jprofiler 作用:

  • 分析Dump内存文件,快速定位内存泄漏。
  • 获得堆中的数据
  • 获得大的对象

Jprofiler安装:

  1. IDEA插件中搜索Jprofiler即可,安装好restart IDEA
  2. 去网页搜索Jprofiler,下载对应的操作系统的安装文件

     3.安装好应用即可。

Jprofiler使用:

举例说明,写一个OOM的情况

package com.gao.test.JVM;

import java.util.ArrayList;

/**
 * @Author lie
 * @Description
 */

/**
 *	VM options:
 *   -Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
 *
 *   -Xms:初始化内存分配大小 (默认 1/64)
 *   -Xmx:最大分配内存 (默认 1/4)
 *   -XX:+PrintGCDetails    打印GC垃圾回收信息
 *   -XX:+HeapDumpOnOutOfMemoryError    打印OOM信息
  */

public class OomTest {
    byte[] array = new byte[1024 * 1024]; //1m

    public static void main(String[] args) {
        ArrayList<OomTest> list = new ArrayList<>();
        int count = 0; //计数器
        try {
            while (true){
                list.add(new OomTest());  //问题所在
                count += 1;
            }
        }catch (Error e){ //要用ERROR捕捉OOM错误
            System.out.println("count = "+count);  //打印创建了几个对象后OOM
            e.printStackTrace();
        }

    }
}

运行后看看

dump出来的文件在这

用Jprofiler打开,分析并排查原因:

查看线程,找到问题所在

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【JVM】内存快照分析工具Jprofiler 的相关文章

  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • 软件测试从月薪8k到年薪30W+,一个女测工的辛苦历程

    我花了6年的时间 由月薪8k的手工测试成长到年薪30w 的测试开发 回顾我从手工测试到测试开发的成长路径 基本上是伴随着 3次能力飞跃 实现的 第一次 能力飞跃 从不满足现状开始 第一家入职的时候是一家小公司 工资给了8K多点 刚开始入行的
  • shopify店铺 怎么样 shopify建站 我的使用经验

    公司从19年底开始使用shopify建站 进行品牌宣传和商城交易的相关业务 我个人作为开发也从开发shopify的工作中学习到了很多东西 这个框架非常灵活 官方也提供了很多接口 优点 主题编辑器 可以实时预览编辑 开发灵活 可扩展性强 插件
  • SoapUI经常遇到的问题记录--持续刷新

    1 怎么SoapUI的Request URL不支持大写怎么办 问题 在SoapUI的Request URL中 每次输入的URL中含有的大写字母会自动转换为小写字母 导致请求不了对应的地址该怎么办 解决方法 具体的解决办法是在HTTP Tes
  • java代码中设置mysql时区_关于Java中的mysql时区问题详解

    前言 话说工作十多年 mysql 还真没用几年 起初是外企银行 无法直接接触到 DB 后来一直从事架构方面 也多是解决问题为主 这次搭建海外机房 围绕时区大家做了一番讨论 不说最终的结果是什么 期间有同事认为 DB 返回的是 UTC 时间
  • 对图像中语义信息、高层和底层特征的理解

    前言 在计算机视觉中 大家经常会提起图像的语义信息以及图像的高层特征和底层特征 那么到底什么是图像的语义呢 图像的高层特征和底层特征又包含哪些信息的呢 今天我们就来说一说 1 图像的语义信息 图像的语义分为视觉层 对象层和概念层 视觉层即通
  • springboot属性类自动加载配置文件中的值

    springboot属性类自动加载配置文件中的值 如Person类加载在yml中配置的name age等属性值 可以通过如下步骤获取 类上添加 ConfigurationProperties注解 prefix为yml中配置的属性名称 要想属
  • redhat linux 系统修复,Red Hat 6企业版系统故障修复方法

    rm boot rf dd if dev zero of dev sda bs 446 count 1 rm f etc inittab rm f etc rc d rc sysinit rm f etc rc d rc loacl mv
  • Java中多线程打印abc

    public class PrintABC private int state private int count private static final int MAX COUNT 50 public synchronized void
  • 无处不在的Attention

    概述 之前的博客中 笔者都曾提到attention机制 这种考虑全局 关注重点的机制在深度学习中很常见 尤其是self attention将自然语言处理带到一个新高度 attention增加了深度学习的可解释性 并且应用广泛 在自然语言处理
  • Linux 查看端口占用情况

    Linux 查看端口占用情况可以使用 lsof ss和 netstat 命令 一 lsof lsof命令详解 lsof list open files 是一个列出当前系统打开文件的工具 lsof 查看端口占用语法格式 lsof i 端口号
  • 37黑马QT笔记之QFileInfo提供文件相关信息

    37黑马QT笔记之QFileInfo提供文件相关信息 1 QFileInfo 这个类提供了许多函数给我们查找文件的信息 例如文件名 文件大小等等 对我们进行某些处理相当有用 例如你要对某个目录操作 需要判断它是否为目录 当你需要传输文件内容
  • 华为OD机试 - 最大数字

    题目描述 给定一个由纯数字组成以字符串表示的数值 现要求字符串中的每个数字最多只能出现2次 超过的需要进行删除 删除某个重复的数字后 其它数字相对位置保持不变 如 34533 数字3重复超过2次 需要删除其中一个3 删除第一个3后获得最大数
  • Mac下输入法总是默认中文,怎么设置成英文的?

    最近一同事在DreamWeaver里 写CSS样式的时候 默认总是中文 切到别的窗口 再切回来 就变成中文了 总要按一下切换键 时间长了特别烦人 在网上找了一些方法 最后找到一个有效的 总结一下就是 先把系统语言设置成英文 然后重启 再重新
  • java web从入门到资深进阶路线图

    要头发伤钱 要钱伤头发 如果说你已经下定了决心 为了钱不惜一切代价 请往后看 从我讲课以来 有很多朋友问过我 java web应该如何学 的确 java后端技术知识体系非常庞大 很多初学者往往一头雾水 不知道怎么学 学些什么东西 先学什么
  • uniapp安装npm依赖,导入,使用

    1 本文以uniapp安装并使用动画组件animate为案例书写 其余组件可使用相同方法套用 2 第一步现在先打开命令行 检查npm是否已经正确安装 输入npm v 返回版本号则证明npm安装正常 如有问题 自行百度npm安装 3 npm环
  • Linux - quota的举例说明

    实作 Quota 流程 1 文件系统支持 root www df h home Filesystem Size Used Avail Use Mounted on dev hda3 4 8G 740M 3 8G 17 home lt 鸟哥主
  • 【STM32】工程配置,存储空间分别情况,常用操作

    STM32的程序和数据存储分布 存储域 意义 存储介质 Code 代码域 ROM RO data 只读数据域 ROM RW data 可读可写数据域 指初始化为非0值的可读写数据 不运行的时候ROM 运行的时候RAM ZI data 可读可
  • informatica简易教程

    一 环境配置1 informatica的元数据 账号 密码 信息保存在Oracle上面2 Linux下在infa bin里有informatica的启动脚本startup infa sh3 修改windows主机的hosts 地址C Win
  • Android Studio远程主机强迫关闭了一个现有的连接

    只要android studio一编译项目 就报 远程主机强迫关闭了一个现有的连接 An Existing Connection was Forcibly Closed by the Remote Host 原因 打开了 win10 的热点
  • 【JVM】内存快照分析工具Jprofiler

    OOM了 怎么办 最好能够快速找到代码第几行出错 内存快照分析工具 MAT Jprofiler MAT Jprofiler 作用 分析Dump内存文件 快速定位内存泄漏 获得堆中的数据 获得大的对象 Jprofiler安装 IDEA插件中搜