JVM常见排查问题的命令及可视化工具
前置:
RMI协议:java的一个远程调用协议,在不同的JVM之间可以进行接口的调用,但数据不安全,且仅限java;
一、常见命令及用法
1、jps:与Linux的ps命令有点类似,查看系统中在运行的Java程序,并打印main方法所在类名和PID进程号;主要选项参数:
-m:输出启动时传递给main函数的参数
-v:输出启动时JVM的参数
2、jstat:监视运行中的JVM状态信息,包含类加载的信息,内存、垃圾回收、即时编译信息(当使用动态代理时,会在运行过程中实时的产生Class对象);
可以查看本地的,也可以通过RMI协议查看远程的;
在运行中的JVM,没有可视化图形工具的时候常用;
命令格式:
本地:jstat option interval count
如:jstat -gc 1027 1000 10 表示打印1027那个进程的垃圾回收信息,每1000毫秒打印一次,总共打印10次,省略interval和count表示只打印一次;只省略count表示在间隔时间内一直打印,interval的单位是毫秒;
远程:jstat option 协议RMI://lvmid @远程机器的hostname:端口/servername
如:jstat -gc RMI://1027@192.168.1.1:8080/HelloJVM
主要选项参数:主要包含三大类:类加载、垃圾回收和即时编译情况
-gc:表示打印gc信息
-class:表示打印类加载和卸载,空间和耗时等信息
-gccause:导致上一次GC的原因
-compiler:即时编译过的方法、耗时等;
3、jmap:生成堆转储文件(heapdump或dump文件)
备注:生成堆转储快照也可以通过设置参数的方式进行,比如设置
+XX:HeapDumpOnOutOfMemaryError:在出现内存溢出异常的时候在当前工程目录下,生成堆转储快照,这种是比较暴力的做法,一般在生产环境上不用,因为生成快照是比较耗时的,会影响系统整个运行,一般在测试环境或者压力测试的时候用;
也可以通过+XX:HeapDumPath=path来指定生成堆文件的路径
jmap生成堆转储快照:
jmap -dump pid
jmap -heap pid:生成堆详细信息,比如垃圾回收器,参数配置等,但只在Linux下有限,Windows下无效;
jmap -F:当已经发生内存溢出,同时使用jmap -dump无响应时,使用-F强制生成堆文件
jmap -histo:统计对象信息,包括类、实例数量等,可以查看哪个对象分配最多导致内存溢出;
4、jstack:生成当前时刻JVM的线程快照,线程快照是指每一条线程正在执行的那个方法的堆栈信息;当某个线程出现长时间卡顿时,需要使用该命令进行定位,比如出现请求外部资源未响应导致一直等待,死循环,深度递归调用,死锁等;
格式:jstack option pid
jstack -F:强制生成线程快照信息
jstack -l:显示锁的附加信息;
5、jhat:与jmap配合使用,在JVM内部内置了一个微型的web服务器,用来分析jmap转储的堆文件快照,除非在完全依赖线上的环境上,否则一般不使用jhat来分析堆文件,因为功能相对简陋,且加载堆文件比dump堆文件更耗内存,可以下载到本地使用VisualVM可视化工具进行分析;
6、jinfo:查看JVM的一些显示指定和非显示指定的参数,也可以对这些参数进行修改
jinfo -flag:查询默认的那些参数值
二、JDK自带可视化工具
1、JConsole
2、VisualVM:
对JVM实际性能影响较小,相比于其他可视化工具,它可以使用在生产环境中排查问题;
支持插件安装,可以扩展功能;
3、Mission Control
三、其他第三方可视化工具
1、阿里的Arthas
相关文章:
JVM常见排查问题的命令及可视化工具
前置: RMI协议:java的一个远程调用协议,在不同的JVM之间可以进行接口的调用,但数据不安全,且仅限java; 一、常见命令及用法 1、jps:与Linux的ps命令有点类似,查看系统中在运行的J…...
【python】matplotlib(moon cake)
文章目录 1、Style12、Style23、Style34、Style45、Style56、Style67、Style78、参考的库函数matplotlib.patches.Arcmatplotlib.patches.Wedge 9、参考 1、Style1 """ author: tyran """from numpy import sin, cos, pi import matplotlib.pyp…...
Pytorch使用手册-空间变换网络指南(专题十五)
在本教程中,您将学习如何使用一种称为空间变换网络(Spatial Transformer Networks, STN)的视觉注意力机制来增强您的网络。您可以在DeepMind的论文中了解更多关于空间变换网络的内容。 空间变换网络是可微分注意力的一种推广,可以应用于任何空间变换。空间变换网络(简称S…...
Vue 中el-table-column 进行循环,页面没渲染成功
文章目录 前言效果图代码示例可能出现的问题及原因**解决思路** 前言 实现效果:el-table-column 进行循环,使之代码简化 遇到的问题: data进行默认赋值,操作列的删除都可以出来,其他表格里面的数据没出来 效果图 示例…...
基于单片机的温湿度采集系统(论文+源码)
2.1系统的功能 本系统的研制主要包括以下几项功能: (1)温度检测功能:对所处环境的温度进行检测; (2)湿度检测功能:对所处环境的湿度进行检测; (3)加热和制冷功能:可以完成加热和制冷功能。 (4)加湿和除…...
使用envoyfilter添加请求头
该envoyfilter实现了这样一个功能,如果请求头中含有Sw8,则添加请求头HasSw8: true。 1. 内嵌lua脚本 apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata:name: add-header-filternamespace: demo-bookinfo # 可根据实际情况调整命…...
kafka开机自启失败问题处理
前言:在当今大数据处理领域,Kafka 作为一款高性能、分布式的消息队列系统,发挥着举足轻重的作用。无论是海量数据的实时传输,还是复杂系统间的解耦通信,Kafka 都能轻松应对。然而,在实际部署和运维 Kafka 的…...
优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变
优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变 在当今数字营销环境中,搜索引擎优化(SEO)是提升网站流量和可见性的关键策略。苹果CMS作为一款灵活的内容管理系统,提供了丰富的插件功能,尤其是…...
git clone 和 conda 换源
文章目录 git clone 通过 sshconda 创建虚拟环境通过 env.yml 文件conda 换源 git clone 通过 ssh git clone ssh://用户名IP地址:/仓库名字.gitconda 创建虚拟环境通过 env.yml 文件 conda env create -f environment.ymlconda 换源 Step 1 生成 .bashrc 文件在家目录下。…...
人工智能及深度学习的一些题目(二)
1、【单选题】 不属于语音识别预处理的步骤是哪个? 去重 2、HSV,H是色调,S是饱和度,V是亮度。 3、【填空题】 语音信号预处理中( 预加重 )的目的是为了对语音的高频部分进行加重,去除口唇辐射的…...
怎么在VMware Workstation上安装Win11虚拟机?
Windows11虚拟机是免费的吗? Windows 11 虚拟机本身并不是免费的。你需要一个合法的 Windows 11 许可证才能在虚拟机中运行。不过,许多虚拟机软件(如 VirtualBox 和 VMware Workstation Player)本身是免费的,允许你创…...
协程原理 函数栈 有栈协程
协程为什么开销小于线程 协程本质上是线程,将调度的代码在用户态重新实现,因为子程序切换不是线程切换而是由程序自身控制,没有线程切换的开销,所以执行效率高。协程通常是纯软件实现的多任务,与CPU和操作系统通常没有…...
SpringBoot整合springmvc、扩展springmvc
目录 一、 SpringMVC三大组件二、 Spring MVC 组件的自动管理2.1 中央转发器(DispatcherServlet)2.2 控制器2.3 视图解析器自动管理2.4 静态资源访问2.5 消息转换和格式化2.6 欢迎页面的自动配置 三、Springboot扩展springmvc3.1 视图控制器注册…...
免费部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型(简单5步实现,免费且比GPT4.0更好用)
摘要: 本文将指导您如何部署一个本地AI大语言模型聊天系统,使用Chatbox AI客户端应用和grok-beta大模型,以实现高效、智能的聊天体验。 引言: 由马斯克X-AI发布的Grok 2大模型以其卓越的性能超越了GPT4.0。Grok模型支持超长文本…...
音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…...
从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用
文章目录 1. 后端项目搭建 1.1 环境准备1.2 数据表准备1.3 SpringBoot3项目创建1.4 MySql环境整合,使用druid连接池1.5 整合mybatis-plus 1.5.1 引入mybatis-plus1.5.2 配置代码生成器1.5.3 配置分页插件 1.6 整合swagger3(knife4j) 1.6.1 整…...
修改表字段属性,SQL总结
MYSQl varchar转为mediumtext ALTER TABLE table_name MODIFY COLUMN column_name mediumtext; ALTER TABLE table_name MODIFY COLUMN column_name varchar(255) 1. 修改字段的数据类型 使用 MODIFY COLUMN 可以改变字段的数据类型、长度、默认值或注释,但不会更…...
go-xorm连接
package mainimport ("fmt"_ "github.com/go-sql-driver/mysql""time""xorm.io/xorm" )func MysqlDbContent() {//数据库基本信息var (userName string "root"password string "12345678"ipAddress string &…...
Excel 面试 04 查找函数 XLOOKUP
Excel 的 XLOOKUP 函数是一个功能强大的查找工具,用于从一个范围或数组中搜索值并返回对应结果。它是 VLOOKUP 和 HLOOKUP 的更高级替代品,支持更多灵活功能。 语法 XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], …...
Flannel和Calico之对比(Comparison between Flannel and Calico)
K8S网络插件(CNI):Flannel和Calico详细对比 Flannel和Calico是Kubernetes中最常用的两种CNI(Container Network Interface)插件,各自针对不同的网络需求提供解决方案。以下是对这两种插件的详细讲解&#…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
