JVM 内存溢出和死锁检测

内存溢出案例

案例环境

案例代码

package com.hero.jvm.memory;importjava.util.ArrayList;importjava.util.List;importjava.util.UUID;public class TestJvmOutOfMemory{public static void main(String[]args){List<Object>list=new ArrayList<>();for(int i=0;i<10000000;i++){String str="";for(int j=0;j<1000;j++){str+=UUID.randomUUID().toString();}list.add(str);}System.out.println("ok");}}

JVM 参数

  1. 让案例尽快 OOM
  2. 开启发生 OOM 时自动 dump 堆快照
#参数如下:-Xms8m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError

执行结果

溢出打印

java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid31092.hprof... Heap dumpfilecreated[8453096bytesin0.031secs]Exceptioninthread"main"java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3332)at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)at java.lang.StringBuilder.append(StringBuilder.java:136)at com.hero.TestJvmOutOfMemory.main(TestJvmOutOfMemory.java:13)

dump 了堆快照文件

导入 MAT 分析

可以看到,有81.72%的内存由Object[]数组占有,所以比较可疑。

分析:这个可疑是正确的,因为已经有超过80%的内存都被它占有,这是非常有可能出现内存溢出的。

直接看对象详情

死锁检测

如果在生产环境发生了死锁,我们将看到的是部署的程序没有任何反应了,这个时候我们可以借助jstack进行分析,下面我们实战下查找死锁的原因。

案例环境

publicclassTestDeadLock{privatestaticObjectobj1=newObject();privatestaticObjectobj2=newObject();publicstaticvoidmain(String[]args){newThread(newThread1()).start();//启动线程01newThread(newThread2()).start();//启动线程02}//线程01privatestaticclassThread1implementsRunnable{@Overridepublicvoidrun(){synchronized(obj1){System.out.println("Thread1 拿到了 obj1 的锁!");try{// 停顿2秒的意义在于,让Thread2线程拿到obj2的锁Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}synchronized(obj2){System.out.println("Thread1 拿到了 obj2 的锁!");}}}}//线程02privatestaticclassThread2implementsRunnable{@Overridepublicvoidrun(){synchronized(obj2){System.out.println("Thread2 拿到了 obj2 的锁!");try{// 停顿2秒的意义在于,让Thread1线程拿到obj1的锁Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}synchronized(obj1){System.out.println("Thread2 拿到了 obj1 的锁!");}}}}}

使用 Jstack 分析

命令:jstack 18487 | grep ‘BLOCKED’ -A 15 --color

发现两个互相等待锁的线程

使用 Arthas 分析死锁

thread-b 命令

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

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

相关文章

清华字节跳动首创视频换脸新纪元:让照片主角完美融入视频场景

这项由清华大学和字节跳动智能创作实验室联合开展的开创性研究于2026年1月发表&#xff0c;论文编号为arXiv:2601.01425v1。研究团队开发了一套名为DreamID-V的全新视频换脸技术框架&#xff0c;首次实现了将单张照片中的人物身份完美融入到任何视频场景中&#xff0c;同时保持…

交通仿真软件:Paramics_(5).交通流仿真

交通流仿真 1. 交通流仿真的基础概念 交通流仿真是一种通过计算机模拟技术来研究和分析交通系统运行情况的方法。它可以帮助交通规划师、工程师和研究人员了解交通系统在不同条件下的行为&#xff0c;从而优化交通设计、管理和控制。Paramics 是一款功能强大的交通仿真软件&…

阿尔伯塔大学新突破:让AI学会自我检查错误,准确率远超人工审核

这项由加拿大阿尔伯塔大学的Amirhosein Ghasemabadi和Di Niu教授领导的研究发表于2026年1月的arXiv预印本服务器&#xff0c;论文编号为2512.20578v2&#xff0c;有兴趣深入了解的读者可以通过该编号查询完整论文。现在的人工智能聊天机器人就像一个极其博学但有时会胡说八道的…

交通仿真软件:Paramics_(3).交通网络建模基础

交通网络建模基础 1. 交通网络的基本概念 交通网络是交通仿真中的基础组成部分&#xff0c;它描述了道路、交叉口、车道、交通信号等交通设施的布局和连接关系。在Paramics中&#xff0c;交通网络的建模是通过一系列工具和步骤来完成的。本节将介绍交通网络的基本概念&#xff…

交通仿真软件:Paramics_(3).数据输入与处理

数据输入与处理 在交通仿真软件中&#xff0c;数据输入与处理是至关重要的步骤。这一部分将详细介绍如何在Paramics中输入和处理各种交通数据&#xff0c;包括路网数据、交通流量数据、车辆数据等。我们将通过具体的例子来说明这些数据的输入方法和处理技巧。 路网数据输入 路网…

上海交大突破:单一AI模型实现全视觉创作任务

这项由上海交通大学的陈俊逸、何通等研究者与快手科技Kling团队、南洋理工大学合作完成的研究发表于2026年1月&#xff0c;论文编号为arXiv:2601.02358v1。对于想要深入了解技术细节的读者&#xff0c;可以通过这个编号在学术数据库中查询完整论文。在当今的AI时代&#xff0c;…

交通仿真软件:Paramics_(2).交通仿真基础理论

交通仿真基础理论 在上一节中&#xff0c;我们介绍了交通仿真的基本概念和应用领域。接下来&#xff0c;我们将深入探讨交通仿真软件的基础理论&#xff0c;这些理论是理解交通仿真软件如何工作的关键。本节将涵盖以下几个方面&#xff1a; 1. 交通流理论 交通流理论是交通仿真…

从案例到技巧:Agentic AI提示设计的实战总结(提示工程架构师版)

好的&#xff0c;技术架构师&#xff01;基于您提供的主题&#xff0c;我为您精心构思一篇面向**具备基础提示工程知识、致力于构建复杂可靠Agent系统的高级用户&#xff08;如提示工程架构师、技术负责人、高级AI工程师&#xff09;**的实战深度总结文章。文章将聚焦可落地的设…

交通仿真软件:Aimsun_(21).交通仿真中的数据分析

交通仿真中的数据分析 数据导入与预处理 在交通仿真软件Aimsun中&#xff0c;数据的导入与预处理是进行仿真分析的第一步。这一部分将详细介绍如何从各种数据源导入数据&#xff0c;并进行必要的预处理&#xff0c;以便在仿真模型中使用。 1. 数据源概述 Aimsun支持多种数据源&…

【图像加密】基于matlab混沌系统和DNA编码图像加密解密【含Matlab源码 14898期】含论文

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

这款甘特图我愿称之为2026年最强!免费开源太良心![特殊字符]

作为一个项目管理老鸟&#xff0c;我对甘特图工具可太挑剔了&#xff01;2026年了&#xff0c;市面上的甘特图工具卷得飞起&#x1f631; 我把目前热门的6款在线甘特图都体验了一遍&#xff0c;功能、易用性、价格全方位对比&#xff01;最后选出的这款&#xff0c;真的绝绝子&…

基于C++的《Head First设计模式》笔记——抽象工厂模式

目录 一.专栏简介 二.依赖很强的代码 三.对象依赖 四.依赖倒置原则 五.应用原则 六.依赖倒置原则中&#xff0c;“倒置”在哪&#xff1f; 七.帮助我们遵循该原则的几条指南 八.原料工厂 九.重做披萨 十.我们做了什么 十一.定义抽象工厂 十二.比较工厂方法和抽象工厂…

读懂 sap.m.URLHelper 文档里的 library: sap.m 与 Module: sap/m/library

你在 SAP UI5 API Reference 里看到的这两个字段&#xff0c;看起来都在讲 sap.m&#xff0c;但它们回答的是两类完全不同的问题&#xff1a; library: sap.m&#xff1a;这条 API 属于哪个 UI5 库&#xff08;library 维度&#xff1a;交付、依赖、主题、预加载等的组织单位&…

macOS恢复模式终端备份脚本:无依赖、保层级、避冲突的完整方案

macOS恢复模式终端备份脚本&#xff1a;无依赖、保层级、避冲突的完整方案 文章目录macOS恢复模式终端备份脚本&#xff1a;无依赖、保层级、避冲突的完整方案一、恢复模式备份的核心痛点二、核心功能与实现逻辑三、关键技术点与解决方案1. 替代缺失命令&#xff1a;用纯bash实…

【图像传输】基于matlab GUI格雷码编码MPSK图像传输系统【含Matlab源码 14896期】含报告

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

【图像加密】基于matlab DNA结合arnold置乱变换实现彩色图像加密解密【含Matlab源码 14897期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

【图像传输】格雷码编码MPSK图像传输系统【含GUI Matlab源码 14896期】含报告

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab武动乾坤博客之家&#x1f49e;…

TDengine Python 连接器入门指南

TDengine Python 连接器入门指南 本文面向 TDengine 初学者&#xff0c;目标是让你在 5&#xff5e;10 分钟内完成&#xff1a;安装连接器 → 建立连接 → 建库建表 → 写入 → 查询&#xff0c;并掌握连接器的基本使用方式与常见问题排查。 说明&#xff1a;TDengine 官方 Py…

基于Simulink的微电网中储能主控单元协调运行仿真

目录 手把手教你学Simulink 一、引言:为什么微电网需要“储能主控单元”? 二、系统整体架构 控制角色分配: 三、理论基础:下垂控制(Droop Control) 1. 有功-频率下垂(P-f) 2. 无功-电压下垂(Q-V) 四、Simulink 建模全流程 步骤1:主电路搭建(Simscape Elec…

Qt OpenGL 生成Mipmap技术详解

Qt OpenGL 生成Mipmap技术详解1. Mipmap技术概述1.1 Mipmap金字塔结构1.2 Mipmap的优势2. Qt中生成Mipmap的实现2.1 基本方法2.2 参数详解3. 高级应用技巧3.1 自定义Mipmap生成3.2 性能优化技巧4. 实际应用案例4.1 3D地形渲染4.2 2D游戏中的精灵渲染5. 常见问题解答5.1 Mipmap会…