JVM问题排查手册
三万字长文:JVM内存问题排查Cookbook
一、Heap快照
# jmap命令保存整个Java堆(在你dump的时间不是事故发生点的时候尤其推荐)
jmap -dump:format=b,file=heap.bin <pid> # jmap命令只保存Java堆中的存活对象, 包含live选项,会在堆转储前执行一次Full GC
jmap -dump:live,format=b,file=heap.bin <pid># jcmd命令保存整个Java堆,Jdk1.7后有效
jcmd <pid> GC.heap_dump filename=heap.bin# 在出现OutOfMemoryError的时候JVM自动生成(推荐)节点剩余内存不足heapdump会生成失败
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heap.bin# 编程的方式生成
使用HotSpotDiagnosticMXBean.dumpHeap()方法# 在出现Full GC前后JVM自动生成,本地快速调试可用
-XX:+HeapDumpBeforeFullGC或 -XX:+HeapDumpAfterFullGC
二、GC日志
# Java8及以下
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:<path># Java9及以上
-Xlog:gc*:<path>:time
三、内存栈生成
# jstack生成,推荐
jstack <pid> > jstack.log# jcmd生成
jcmd <pid> Thread.print > jstack.log
四、系统日志
sudo dmesg|grep -i kill|less 或者grep /var/log/kern.log* -ie kill

五、类加载相关
# 显示指定进程的类加载器相关的统计信息
jmap -clstats <pid> :# 监视类加载器的行为,包括加载、卸载的类的数量以及相关的内存消耗。
jstat -class <pid># 统计在JVM的类加载中,每一个类的实例数量,并按照数量降序排列。
jcmd <pid> GC.class_stats|awk '{print$13}'|sed 's/\(.*\)\.\(.*\)/\1/g'|sort |uniq -c|sort -nrk1# arthas的classloader命令玩法比较多,有一定学习成本
arthas的classloader命令
在调试环境中添加VM参数(在生产环境请谨慎!!!)
# 用于同时跟踪类的加载和卸载
-verbose:class
# 单独跟踪类的加载
-XX:+TraceClassLoading
# 单独跟踪类的卸载
-XX:+TraceClassUnloading
六、堆外内存排查
top发现JAVA实际占用的RES 甚至超过了 -Xmx 的大小,内存使用率不断上升,甚至开始使用 SWAP 内存,同时可能出现 GC 时间飙升,线程被 Block 等现象
# 在项目中添加 JVM参数后重启项目(需要注意的是,打开 NMT 会带来 5%~10% 的性能损耗)
-XX:NativeMemoryTracking=detail# 查看内存分布
jcmd pid VM.native_memory detail重点观察 total 中的 committed,因为 jcmd 命令显示的内存包含堆内内存、Code 区域,
通过 Unsafe.allocateMemory 和 DirectByteBuffer 申请的内存,
但是不包含其他 Native Code(C 代码)申请的堆外内存。
如果 total 中的 committed 和 top 中的 RES 相差不大,
则应为主动申请的Direct Memory未释放造成的。
相关文章:
JVM问题排查手册
三万字长文:JVM内存问题排查Cookbook 一、Heap快照 # jmap命令保存整个Java堆(在你dump的时间不是事故发生点的时候尤其推荐) jmap -dump:formatb,fileheap.bin <pid> # jmap命令只保存Java堆中的存活对象, 包含live选项,…...
前端canvas项目实战——简历制作网站(三)——右侧属性栏(线条宽度样式)
目录 前言一、效果展示二、实现步骤1. 实现线条宽度(strokeWidth)的属性模块2. 实线线条样式(strokeDashArray)的属性模块3. 意料之外的“联动” 三、Show u the code后记 前言 上一篇博文中,我们初步实现了右侧属性栏…...
字节跳动二面经典题目
前言 语论即为「语兴式论语」,以语录体及对话的形式,沉淀球友实际工作学习中存在的疑难杂症解答,希望能够更好的帮助到球友和粉丝。欢迎关注公众号:语数 本期投稿 本期语数精选来源于球友应对字节跳动二面时候的场景问题 数仓工程…...
微搭低代码从入门到精通01应用介绍
目录 1 学习路线图2 应用介绍3 编辑器介绍总结 低代码的概念于2014年由 Forrester 首次正式提出。其将低代码定义为:能够以“最少的手写代码”和设置快速开发应用、配置和部署业务应用程序。 不同应用厂商的解法不一样,Gartner评估了400多款低代码/无代码…...
论文阅读《thanking frequency fordeepfake detection》
项目链接:https://github.com/yyk-wew/F3Net 这篇论文从频域的角度出发,提出了频域感知模型用于deepfake检测的模型 整体架构图: 1.FAD: 频域感知分解,其实就是利用DCT变换,将空间域转换为频域ÿ…...
ArcgisForJs快速入门
文章目录 0.引言1.前端代码编辑工具2.使用ArcgisForJs创建一个简单应用3.切片地图服务图层4.动态地图服务图层5.地图事件 0.引言 ArcGIS API for JavaScript是一款由Esri公司开发的用于创建WebGIS应用的JavaScript库。它允许开发者通过调用ArcGIS Server的REST API,…...
【解决方法】git pull报错ssh: connect to host github.com port 22: Connection timed out
问题 git pull ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository.解决方法 在C:\Users\username.ssh文件夹下新建config文件,填入以下文本(如有则直接在文件最后一行新增)&am…...
30天精通Nodejs--第三十天:项目实战-物联网应用
目录 引言架构设计编码创建项目数据服务模拟设备消息接收并保存设备数据后端接口项目启动及接口测试项目启动测试源码地址结语引言 在之前的一系列文章中,我们已系统性地探讨了诸多Node.js相关的技术要点与理论背景。随着知识体系的铺垫到位,我们现在步入了实战环节。接下来…...
java 社区资源管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java Web社区资源管系统是一套完善的java web信息管理系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.…...
网络编程套接字(Socket)
为什么需要网络编程??? -丰富的网络资源 每天你在b站上刷着喜欢的up主的视频,实质是通过网络,获取到网络上的一个视频资源 与本地打开文件类似,只是视频文件这个资源来源是网络 所谓的网络编程,其实就是从网络上获取各种数据资源 什么是网络编程?? 网络编程,指的是网络…...
C语言第十一弹---函数(下)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 函数 1、嵌套调用和链式访问 1.1、嵌套调用 1.2、链式访问 2、函数的声明和定义 2.1、单个文件 2.2、多个文件 2.3、static 和 extern 2.3.1、static…...
Unity读书系列《Unity3D游戏开发》——拓展编辑器(一)
文章目录 前言一、扩展Project视图1、右键扩展菜单(Asset)2、监听事件3、拓展布局 二、扩展Hierarchy视图1、拓展菜单(GameObject)2、拓展布局3、重写菜单 三、扩展Inspector视图1、扩展原生组件2、扩展继承组件 四、扩展Scene视图…...
【Git】项目管理笔记
文章目录 本地电脑初始化docker报错.gitignoregit loggit resetgit statusgit ls-filesgit rm -r -f --cached拉取仓库文件更新本地的项目报错处理! [rejected] master -> master (fetch first)gitgitee.com: Permission denied (publickey).error: remote origin already e…...
中文词性标注工具pkuseg例子(运行结果,不太好)
pkuseg_demo.md pkuseg 预训练模型 预训练模型science 安装 pip3 install pkuseg cd /rot/pkuseg_home/model/wget https://github.com/lancopku/pkuseg-python/releases/download/v0.0.25/science.zip uzip science.zip -d ./science/ ls /rot/pkuseg_home/model/science/…...
获取URL参数:split方法、URLSearchParams方法示例
在JavaScript中,可以使用多种方法来获取URL参数,其中常用的方法有split()和URLSearchParams()。 使用split()方法获取URL参数: split()方法将字符串分割成数组。可以使用split()方法将URL分割成协议、主机、路径和查询字符串等部分。然后可…...
SparkSql---用户自定义函数UDFUDAF
文章目录 1.UDF2.UDAF2.1 UDF函数实现原理2.2需求:计算用户平均年龄2.2.1 使用RDD实现2.2.2 使用UDAF弱类型实现2.2.3 使用UDAF强类型实现 1.UDF 用户可以通过 spark.udf 功能添加自定义函数,实现自定义功能。 如:实现需求在用户name前加上"Name:…...
系统架构15 - 软件工程(3)
软件过程模型 瀑布模型特点缺点 原型化模型特点两个阶段不同类型注意 螺旋模型V 模型特点 增量模型特点 喷泉模型基于构件的开发模型(CBSD)形式化方法模型敏捷模型特点“适应性” (adaptive) 而非“预设性” (predictive)“面向人的” (People-oriented) 而非“面向过程的” (P…...
两个近期的计算机领域国际学术会议(软件工程、计算机安全):欢迎投稿
近期,受邀担任两个国际学术会议的Special session共同主席及程序委员会成员(TPC member),欢迎广大学界同行踊跃投稿,分享最新研究成果。期待这个夏天能够在夏威夷檀香山或者加利福尼亚圣荷西与各位学者深入交流。 SERA…...
(二十一)Flask之上下文管理第二篇(细细扣一遍源码)
每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入…...
Java项目:基于SSM框架实现的企业员工岗前培训管理系统(ssm+B/S架构+源码+数据库+毕业论文)
一、项目简介 本项目是一套ssm821基于ssm框架实现的企业员工岗前培训管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格…...
OFA视觉问答模型惊艳效果:复杂背景中主物体识别与属性描述能力
OFA视觉问答模型惊艳效果:复杂背景中主物体识别与属性描述能力 1. 模型效果惊艳展示 OFA视觉问答模型在复杂场景中的表现令人印象深刻。这个模型能够准确识别图片中的主要物体,并详细描述其属性特征,就像有一个专业的图像分析师在为你解读图…...
BH1750光照传感器避坑指南:STM32的I2C通信那些事儿(附STM32F407调试心得)
BH1750光照传感器实战避坑:STM32 I2C通信深度解析与调试技巧 第一次用STM32驱动BH1750光照传感器时,我盯着纹丝不动的数据寄存器发呆了半小时——I2C总线明明显示通信成功,但读回来的光照值永远是零。这种看似简单却暗藏玄机的外设调试经历&a…...
融合多尺度特征与注意力机制的YOLOv5红外小目标检测优化方案
1. 红外小目标检测的技术挑战 红外遥感图像中的小目标检测一直是计算机视觉领域的难点问题。与可见光图像相比,红外图像具有低对比度、高噪声、目标尺寸小等特点,这使得传统检测算法难以取得理想效果。在实际应用中,军事侦察中的无人机识别、…...
Java Web新手必看:EDUCODER头哥MVC用户登录实战(含JDBC连接避坑指南)
Java Web新手实战:EDUCODER平台MVC用户登录全流程解析 第一次接触Java Web开发时,最让人兴奋的莫过于亲手实现一个完整的用户登录系统。这不仅是对MVC架构的直观理解,更是打通前后端数据流的关键里程碑。在EDUCODER这样的实训平台上ÿ…...
避坑指南:libvirt远程连接配置全解析(SSH/TCP实战演示)
避坑指南:libvirt远程连接配置全解析(SSH/TCP实战演示) 虚拟化技术在现代数据中心和云计算环境中扮演着核心角色,而libvirt作为开源虚拟化管理工具的事实标准,其远程管理能力直接决定了运维效率。本文将深入剖析libvir…...
3个关键场景与4步操作:深入解析RevokeMsgPatcher防撤回工具的技术实现与应用实践
3个关键场景与4步操作:深入解析RevokeMsgPatcher防撤回工具的技术实现与应用实践 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目…...
Sqitch 实战教程:如何在 PostgreSQL 中管理数据库变更
Sqitch 实战教程:如何在 PostgreSQL 中管理数据库变更 【免费下载链接】sqitch Sensible database change management 项目地址: https://gitcode.com/gh_mirrors/sq/sqitch Sqitch 是一款功能强大的数据库变更管理工具,专为 PostgreSQL 等数据库…...
终极指南:5分钟掌握Piper鼠标地图组件与SVG渲染核心技术
终极指南:5分钟掌握Piper鼠标地图组件与SVG渲染核心技术 【免费下载链接】piper GTK application to configure gaming devices 项目地址: https://gitcode.com/gh_mirrors/pip/piper Piper是一款功能强大的GTK应用程序,专为配置游戏设备而设计。…...
【限时开源】某金融级TCC事务中间件核心模块源码解析(含TCC-Coordinator状态机设计文档V2.3)
第一章:【限时开源】某金融级TCC事务中间件核心模块源码解析(含TCC-Coordinator状态机设计文档V2.3)本章聚焦于已开源的金融级TCC事务中间件核心协调器(TCC-Coordinator)的实现细节,重点剖析其高可用状态机…...
手把手教你用EAS2搞定maxon电机与elmo驱动器:从参数辨识到运动控制
手把手教你用EAS2实现maxon电机与elmo驱动器的精准控制 在工业自动化和精密运动控制领域,maxon电机以其卓越的性能和可靠性著称,而elmo驱动器则是实现高精度控制的理想选择。本文将带你从零开始,通过EAS2软件完成从硬件连接到参数辨识&#x…...
