JVM性能调优-JVM工具使用

news2024/12/25 14:00:46

命令行工具

jps

jps -q 只看进程id

jps -l  显示java进程的完整类名

jps -m 查看传递给主类main()的参数

jps -v 列出虚拟机启动时的jvm参数

以上参数可以组合使用

jstat

查看JVM统计信息

 

例:jstat -gc -t 19788 1000 10

-gc:打印gc统计信息 ;-t:打印程序已经运行了多长时间(秒);19788:进程id;1000:每隔多少秒打印一次(毫秒);10:一共打印10次

经验:

  • 可以比较两次测量的间隔时间以及总GC时间的增量,得出GC时间占运行总时间的比例。日过比例超过20%,说明目前堆的压力比较大;如果比例超过90%,说明堆里几乎没有可用空间,随时都可能抛出OOM
  • 得到连续多组OU值,取出每组的最小值,如果这些值呈上升趋势,说明老年代内存已使用量在不断上涨,意味着无法回收的对象在不断增加,很可能存在内存泄

 jinfo

Configuration Info for Java。查看虚拟机配置参数信息,也可用于调整虚拟机的参数配置。

查看:

jinfo -sysprops PID:查看由System.getProperties()取得的参数

jinfo -flags PID:查看全部虚拟机参数

jinfo -flag [参数] PID:查看有没有指定参数

修改:

可以在运行时修改部分参数,并立即生效。但是不是所有的参数都支持动态修改,只有被标记为manageable的flag才可以被实时修改

 

jmap

jmap(JVM Memory Map)。获取dump文件(堆转储快照文件,二进制文件);获取目标Java进程的内存相关信息。

使用一导出内存映像文件

手动:jmap -dump:format=b,file=d:\1.hprof PID

jmap -dump:live,format=b,file=d:\1.hprof PID (只dump存活的对象)

自动(当OOM时自己dump):配置两个JVM参数,-XX:+HeapDumpOnOutOfMemoryError 

-XX:HeapDumpPath=D:\filename.hprof

使用二显示堆内存相关信息

jmap -heap PID > a.txt

jmap -histo PID > b.txt

(新版JDK使用有变化)

jhat

jhat(JVM Analysis Tool)分析jmap生成的heap dump文件。jhat内置了一个微型的HTTP/HTML服务器,可以在浏览器查看分析结果

(jhat在JDK9、JDK10中已经被删除,官方建议用VisualVM代替)

基本使用语法:jhat [option][dumpfile]

默认使用7000端口

jstack

jstack(JVM Stack Trace):生成指定进程当前时刻的线程快照(虚拟机堆栈跟踪)即每一条线程正在执行的方法堆栈的集合。

可用于定位长时间停顿的原因,如线程间死锁

官方帮助文档:jstack

模拟死锁代码:

package other.并发;

/**
 * @author: 小手WA凉
 * @create: 2024-10-09
 */
public class ThreadDeadLock {
    final static Object lock1 = new Object();
    final static Object lock2 = new Object();
    public static void deadLock() {
        new Thread(() -> {
            synchronized (lock1) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                synchronized (lock2) {

                }
            }
        }).start();
        new Thread(() -> {
            synchronized (lock2) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                synchronized (lock1) {

                }
            }
        }).start();
    }

    public static void main(String[] args) {
        ThreadDeadLock.deadLock();
    }
}

jstack PID分析:

 GUI

JDK自带

jconsole

从Java5开始JDK自带的java监控工具,用于对JVM中内存、线程和类的监控

Visual VM

功能更强大的故障诊断和性能监控的可视化工具

也可独立安装(JDK9之后不自带了):VisualVM: Home

visual vm功能强大之一就是可以自己安装插件,比如Visual GC

主要功能:

生成/读取堆dump内存快照

查看JVM参数和系统属性

查看运行中的虚拟机进程

生成/读取线程快照

程序资源的实时监控

第三方工具

Arthas

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

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

相关文章

使用激光跟踪仪提升码垛机器人精度

标题1.背景 码垛机器人是一种用于工业自动化的机器人,专门设计用来将物品按照一定的顺序和结构堆叠起来,通常用于仓库、物流中心和生产线上,它们可以自动执行重复的、高强度的搬运和堆垛任务。 图1 码垛机器人 传统调整码垛机器人的方法&a…

王松绿读《归潮》:岭南文化根脉中流动的文学镜像

王松绿 ,生于河南。后于琼从军为文近二十载。现居三亚。 岭南文化根脉中流动的文学镜像 王松绿 小说《归潮》,打破了作者陈崇正向来善于营造的多重宇宙和多线叙事的阅读迷障,故事角色与作者一起,实现了叙事方式、故事内容…

跨平台游戏的特点

跨平台游戏已成为视频游戏行业的主要趋势,这是由于对各种设备和操作系统之间无缝游戏的需求日益增长。这种方法允许玩家在多个平台(如游戏机、PC和移动设备)上享受他们最喜欢的游戏,同时保持相同的体验和进度。随着越来越多的开发…

SpringBoot开发部署(热部署+常规部署+Docker部署)

开发热部署 SpringBoot模板引擎的页面默认是开启缓存的,如果修改了页面,则刷新页面是得不到修改后的页面的 在application.properties中关闭模板引擎缓存 Thymeleaf spring.thymeleaf.cachefalseFreeMarker spring.freemarker.cachefalseGroovy spring…

Android -- [SelfView] 自定义多色渐变背景板

Android – 自定义多色渐变背景板 前言: Android 自带的 xml 文件内 gradient 设置渐变最多只有三种颜色,使用方便但范围受限,不能很好满足各种需求; 本款多色渐变背景板应运而生:* 1. 支持圆角模式,矩形模…

同望OA tooneAssistantAttachement.jsp 任意文件读取漏洞复现

0x01 产品简介 同望OA,即同望科技打造的智企云协同管理系统,是一款高效的企业协同移动办公系统。秉承“互联网++企业管理”理念,定位于以移动互联办公为基础的企业协同管理软件平台。它旨在通过内置常用标准模块与专项管理模块应用,安全快速地打通管理与业务通道,实现管理…

微软最新 Office 办公软件2025下载 – Microsoft 365 正版优惠订阅

​ 以前 Office 365 是微软打造的「办公软件订阅」服务。订阅后,用户可以在多个平台使用Word、Excel、PowerPoint、OneDrive云存储网盘等正版办公应用。 微软希望这种订阅方式能够推广到更多的产品和用户,于是决定将 Office 365 升级为全新的「Microsoft…

【数据结构】6道经典链表面试题

目录 1.返回倒数第K个节点【链接】 ​代码实现 2.链表的回文结构【链接】 代码实现 3.相交链表【链接】 代码实现 4.判断链表中是否有环【链接】 代码实现 常见问题解析 5.寻找环的入口点【链接】 代码实现1 ​代码实现2 6.随机链表的复制【链接】 代码实现 1.…

51单片机的无线通信智能车库门【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块红外传感器光照传感器时钟模块步进电机蓝牙按键、LED、蜂鸣器等模块构成。适用于智能车库自动门、无线控制车库门等相似项目。 可实现功能: 1、LCD1602实时显示北京时间和自动/手动模式,以及验证是否成…

盘点2024年双十一最值得入手的好物,双十一购物清单宝藏好物推荐

随着2024年双十一购物节的脚步逐渐临近,消费者们正摩拳擦掌,准备迎接这场年度最大的购物狂欢。在这个特别的日子里,各大品牌纷纷推出前所未有的优惠活动,各种好物琳琅满目,让人眼花缭乱,为了帮助大家在这海…

机器学习、深度学习评价指标汇总:TP、TN、FP、FN、AP、mAP、IoU、mAP@3、Prec@10、 Acc@10

系列文章目录 文章目录 系列文章目录一、真正例(True Positive)、假正例(False Positive)、真负例(True Negative)和假负例(False Negative)是评估分类模型性能的重要概念。1. 定义2…

基于多种机器学习的酒店客户流失预测模型的研究与实现

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍实现过程 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 项目背景: 在当今竞争激烈的酒店行业中,预测和防止客户流…

什么是PCB和PCBA,他们的区别是什么?

相信很多人对于PCB电路板并不陌生,可能是日常生活中也能经常听到,但对PCBA或许就不太了解,甚至把和PCB混淆起来。那么PCB是什么?PCBA是如何演变出来的?PCB与PCBA的区别又是什么呢?方案商如何高效找到供应商…

Ubuntu 22.04.4 LTS更换下载源

方法1:使用图形界面更换下载源 1. 打开软件和更新应用 2. 在Ubuntu 软件标签中,点击“下载自”旁边的下拉菜单,选择“其他” 3. 点击“选择最佳服务器”来自动选择最快的服务器 4. 选择服务器 5. 确定并关闭窗口,系统会提示您重新…

应变计的校准方法和周期是怎样的?

应变计的校准方法和周期应变计是用于测量物体应变的关键设备,广泛应用于工程测试和科学研究领域。正确的校准方法和合理的校准周期对于确保应变计测量结果的准确性至关重要。校准方法应变计的方法通常涉及以下几个步骤: 零点校准:这是校准过程…

跨界的胜利:机器学习与神经网络的物理之光

近日,2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家,如今却将全球范围内对机器学习和神经网络的研究和开发作为了一种能…

Robust多模态模型的开发

本文所涉及所有资源均在 传知代码平台 可获取。 目录 Robust 多模态模型:寻找遗失的模态! 一、研究背景 二、模型结构和代码 三、数据集介绍 六、性能展示 六、实现过程 七、运行过程 Robust 多模态模型:寻找遗失的模态! 近年来&a…

MPLS LDP协议

文章目录 LDP标签分发协议工作原理LDP应用倒数第二跳弹出 LDP标签分发协议 基于FEC自动分配标签构建LSP用于建立动态LSPLDP报文头部结构信息类型 工作原理 LDP工作过程 发送Hello消息用于发现邻居;UDP发送LSR_1主动发起并建立TCP连接;TCP进行建立主动方发…

Node.js安装与配置 [详细步骤(实践操作)]

安装与配置 安装Node.js一、(1).下载(可以直接在浏览器下的电脑)一、(2).下载(有些电脑不能在浏览器下载,比如:在浏览器下出来的是IDEA图标)二、安装三、配置环境变量 验证是否安装成功修改模块下载位置一、…

十几天8.7万粉丝,柒奶奶疯狂老太太图文笔记,为什么这么火?项目拆解!利用这个软件一键生成图文,赚钱到手软!

每个行业一有变化,那肯定会带来不少新机会,AI 绘画也是这样。就说小某书账号“人间清醒柒奶奶”吧,在有 AI 绘画之前,柒奶奶的角色和动作都得靠人用手画,可麻烦了。但现在呢,在网站上输入几个词儿就能轻轻松…