java面试题-JVM问题排查
1.常见的Linux定位问题的工具?
常见的 Linux 定位问题的命令可以分为以下几类:
系统状态命令:包括 top、uptime、vmstat、sar 等命令,用于查看系统整体的状态,如 CPU 使用率、内存使用率、磁盘 I/O 等。
进程状态命令:包括 ps、pstree、pgrep、kill 等命令,用于查看进程的状态,如进程 ID、进程占用的资源等。
网络状态命令:包括 ifconfig、ip、netstat、ss、tcpdump 等命令,用于查看网络接口、网络连接状态、网络流量等。
文件状态命令:包括 lsof、fuser、df、du 等命令,用于查看文件句柄、文件系统状态、磁盘使用情况等。
Java 应用状态命令:包括 jps、jstat、jmap、jstack、jinfo 等命令,用于查看 Java 应用程序的状态,如 Java 进程 ID、内存使用情况、线程状态等。
2.JDK自带的定位问题的工具?
jps
jps (Java Process Status Tool) 是一个命令行工具,用于列出系统中所有正在运行的 Java 进程的进程 ID。可以用于确认 Java 进程是否已经启动,以及进程的 PID,便于后续进行进一步的诊断。
jps 命令常用的参数如下:
-q:只输出进程 ID,不输出类名和参数;
-m:输出主类名和参数;
-l:输出完整的包名、类名和参数。
使用示例:
jps // 输出所有 Java 进程的进程 ID 和类名
jps -q // 只输出进程 ID
jps -m // 输出主类名和参数
jps -l // 输出完整的包名、类名和参数
jstat
jstat (JVM Statistics Monitoring Tool) 是一个命令行工具,用于监控 Java 应用程序的各种状态信息,如垃圾回收、类加载、内存、线程等。可以帮助开发人员了解应用程序的实时状态,发现性能瓶颈和内存泄漏等问题。
jstat 命令常用的参数如下:
-gcutil:显示 GC 情况的统计信息,包括 Eden 区、Survivor 区和老年代的使用情况、GC 时间、GC 频率等;
-gcnew:显示新生代的 GC 情况,包括 Eden 区和 Survivor 区的使用情况、GC 时间、GC 频率等;
-gcold:显示老年代的 GC 情况,包括老年代的使用情况、GC 时间、GC 频率等;
-gcpermcapacity:显示永久代的使用情况,包括永久代的使用量、使用率等;
-gcnewcapacity:显示新生代的使用情况,包括 Eden 区和 Survivor 区的使用量、使用率等;
-gccapacity:显示各个区域的容量情况,包括 Eden 区、Survivor 区和老年代的容量、使用量、使用率等;
-class:显示类加载器的加载类的数量、类加载器的数量、已卸载的类的数量等信息;
-compiler:显示 JIT 编译器的编译情况,包括编译任务数、编译失败的任务数、编译耗时等;
-printcompilation:显示 JIT 编译器编译方法的详细信息;
-uptime:显示 JVM 运行时间等信息。
使用示例:
jstat -gcutil 1234 // 监控进程 ID 为 1234 的 JVM 的 GC 情况
jstat -gcnewcapacity 1234 // 监控进程 ID 为 1234 的 JVM 的新生代的使用情况
jstat -class 1234 // 监控进程 ID 为 1234 的 JVM 的类加载器的信息
上述命令会每隔 1 秒(1000 毫秒)输出一次 PID 为 <pid> 的 Java 应用程序的 GC 相关信息,一共输出 10 次。
jmap
jmap (JVM Memory Map Tool) 是一个命令行工具,用于生成 Java 应用程序的内存映像,包括堆内存、非堆内存、PermGen/Metaspace 等。可以用于查看内存使用情况、定位内存泄漏等问题。
以下是jmap的常用命令及其作用:
jmap -heap <pid>:打印Java进程的堆内存信息,包括使用的垃圾回收器、堆大小、新生代大小、新生代中Eden区、Survivor区的比例等。
jmap -histo <pid>:输出Java进程中各个类的实例数量和占用空间大小。可以通过该命令查看某个类的实例数量,以及这些实例的内存使用情况。
jmap -dump:live,format=b,file=<filename> <pid>:生成Java进程的堆转储快照。-dump参数指定生成转储快照,live表示只转储堆中存活的对象,format=b表示生成二进制格式的转储快照,file=<filename>指定生成的转储快照文件名。
需要注意的是,jmap会暂停Java进程的运行,生成堆转储快照期间会影响应用程序的性能,应尽量避免在生产环境中使用。同时,由于jmap需要读取Java进程的内存信息,需要具有相应的权限才能使用。
使用示例:
jmap -dump:format=b,file=heapdump.bin <pid>
上述命令会生成一个名为 heapdump.bin 的二进制文件,保存了 PID 为 <pid> 的 Java 应用程序的内存信息。
jstack
jstack (JVM Stack Trace Tool) 是一个命令行工具,用于生成 Java 应用程序的线程转储信息,可以帮助开发人员定位死锁等线程相关的问题。
jstack [-l] <pid>
其中,-l 表示输出详细的锁信息。<pid> 表示 Java 进程的进程 ID。如果省略 -l 参数,则只输出线程的调用栈信息。
使用示例:
使用jstack命令生成线程快照。
$ jstack 12456 > threads.txt
上述命令将生成一个名为threads.txt的文件,其中包含Java进程中所有线程的堆栈跟踪信息。
JStat
JStat 是 JDK 自带的一款命令行工具,用于查看 JVM 的统计信息。它可以查看 JVM 中的垃圾回收信息、类加载信息、线程状态等,帮助开发人员快速了解 JVM 的运行情况。
以下是JStat常用的选项:
-class:监视类装载、卸载情况。
-gc:监视垃圾回收情况。
-compiler:监视JIT编译情况。
-gcutil:输出垃圾回收统计信息,包括堆使用情况、GC时间、各种GC事件等。
-gcnew:输出新生代垃圾回收统计信息。
-gcold:输出老年代垃圾回收统计信息。
-util:输出各种内存池的使用情况。
JStat的使用非常简单,只需要在命令行中输入"jstat"加上相应的选项和JVM进程ID即可。例如:
jstat -gcutil 1234
这条命令将输出JVM进程ID为1234的垃圾回收统计信息。JStat输出的结果类似于下面这样:
S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 66.85 29.35 67.92 52.90 2342 27.755 3 0.204 27.959
其中,S0和S1是新生代中的两个Survivor区域的使用情况,E是新生代中Eden区域的使用情况,O是老年代的使用情况,P是永久代的使用情况。YGC表示Young GC的次数,YGCT表示Young GC所花费的时间,FGC表示Full GC的次数,FGCT表示Full GC所花费的时间,GCT表示总的GC时间。
相关文章:
java面试题-JVM问题排查
1.常见的Linux定位问题的工具?常见的 Linux 定位问题的命令可以分为以下几类:系统状态命令:包括 top、uptime、vmstat、sar 等命令,用于查看系统整体的状态,如 CPU 使用率、内存使用率、磁盘 I/O 等。进程状态命令&…...

市场上有很多低代码开发平台,不懂编程的人可以用哪些?
市场上有很多低代码开发平台,不懂编程的人可以用哪些?这个问题一看就是外行问的啦,低代码平台主打的就是一个“全民开发”,而且现在很多低代码平台都发展为零代码了,不懂编程也完全可以使用! 所谓低代码开…...

Tina_Linux打包流程说明指南_new
OpenRemoved_Tina_Linux_打包流程_说明指南_new 1 概述 1.1 编写目的 介绍Allwinner 平台上打包流程。 1.2 适用范围 Allwinner 软件平台Tina v3.0 版本以上。 1.3 相关人员 适用Tina 平台的广大客户,想了解Tina 打包流程的开发人员。 2 固件打包简介 固件…...
JVM面试题
JVM 1.jvm的组成部分 类加载器:将javac编译的class文件加载到内存中 运行时数据区:将内存划分成若干个不同的区域。 执行引擎:负责解析命令,提交操作系统执行。 本地接口:融合不同的语言为java所用 2.运行时数据区 方法区&…...
@FeignClient注解
1.在启动类上开启Feign功能 不开会提示找不到所需要的bean Consider defining a bean of type in your configuration SpringBootApplication EnableFeignClients public class AuthApplication {public static void main(String[] args) {SpringApplication.run(AuthApplic…...
一文搞懂如何在 React 中使用 防抖(Debounce)和 节流(Throttle)
在前端的日常开发中,经常会使用到两个函数防抖(Debounce)和节流(Throttle),防抖函数可以有效控制在一段时间内只执行最后一次请求,例如搜索框输入时,只在输入完成后才进行请求接口。…...
Airbyte API
Airbyte API涵盖了Airbyte功能的方方面面,主要分类:Source_definition:来源定义,实现了来源的增删改查功能。Destination_definition:目标定义,实现了目标的增删改查功能。Workspace:工作区管理…...
vue项目使用Electron开发桌面应用
添加npm配置避免安装Electron错误 请确保您的 node 版本大于等于 18. cmd运行: npm config edit 该命令会打开npm的配置文件,请在空白处添加: electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-builder-binaries/ e…...

std::chrono笔记
文章目录1. radio原型作用示例2. duration原型:作用示例3. time_point原型作用示例4. clockssystem_clock示例steady_clock示例high_resolution_clock先说感觉,这个库真恶心,刚接触感觉跟shi一样,特别是那个命名空间,太…...
接收arp请求并发送回应的实例
本文简单介绍了arp协议,用一个实例查看收到的ARP请求,并对该请求发出ARP回应,实例有完整的源代码,使用C语言在Linux下实现,代码中有详细的注释。 1. ARP协议 ARP(Address Resolution Protocol),地址解析协议;在局域网上通过IP地址获取物理地址MAC的协议,该协议工作在数…...

【高性能计算】TVM使用TE手动优化矩阵乘法算法解析与代码解读
引言 注:本文主要介绍、解释TVM的矩阵优化思想、代码,需要配合代码注释一起阅读。 矩阵乘法是计算密集型运算。为了获得良好的 CPU 性能,有两个重要的优化措施: 提高内存访问的高速缓存命中率。复杂的数值计算和热点内存&#x…...

消息中间件的概念
中间件(middleware)是基础软件的一大类,属于可复用的软件范畴。中间件在操作系统软件,网络和数据库之上,应用软件之下,总的作用是为处于自己上层的应用软件提供运行于开发的环境,帮助用户灵活、高效的开发和集成复杂的…...

窃密恶意软件Raccoon最新样本Stealer v2分析
Raccoon 是一个恶意软件家族,2019 年来一直在地下犯罪论坛中以恶意软件即服务的身份进行售卖。2022 年 7 月,该恶意软件家族发布了 C 语言编写的新版本 Raccoon Stealer v2,打破了以往使用 C 开发的传统。 Raccoon 是一个信息窃密恶意软件&a…...

足球俱乐部管理系统
技术:Java、JSP等摘要:网站是一种主要的渠道。人们通过互联网快速、准确的发布信息、获取信息。而足球俱乐部是足球职业化、专业化的一个标志,是足球运动员以足球谋生时,所被聘用的机构,应运时代发展,规模、…...
2023上半年数学建模竞赛汇总(比赛时间、难易程度、含金量、竞赛官网)
1、美国大学生数学建模竞赛等级:国家级是否可跨校:否竞赛开始时间:2月17日~2月21日综合难度:⭐⭐⭐⭐ 竞赛含金量:⭐⭐⭐⭐⭐竞赛官网:https://www.comap.com/2、MathorCup高校数学建模挑战赛---大数据竞赛…...
【python学习笔记】:PHP7 Null合并运算符
在PHP7,一个新的功能,空合并运算符(??)已被引入。它被用来代替三元运算并与 isset()函数功能结合一起使用。如果它存在并且它不是空的,空合并运算符返回它的第一个操作数;否则返回第二个操作数。 示例 <?php// fetch the value of $_…...

数据结构与算法——3.时间复杂度分析1(概述)
前面我们已经介绍了,研究算法的最终目的是如何花费更少的时间,如何占用更少的内存去完成相同的需求,并且也通过案例演示了不同算法之间时间耗费和空间耗费上的差异,但我们并不能将时间占用和空间占用量化。因此,接下来…...

FPGA学习之日常工作复位电路
最近一个多月没有写博客了,然后最近工作中也遇到一个复位信号的问题。问题是这样的,关于外部复位信号,之前我们的处理方式都是通过PLL产生的Lock信号作为内部的复位信号。但是由于换到A54上面没有IP核,所以只有不用PLL,…...
【洛谷 P1177】【模板】快速排序 题解(快速排序+指针)
【模板】快速排序 题目描述 利用快速排序算法将读入的 NNN 个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C 选手请不要试图使用 STL,虽然你可以…...

Pthon--自动化实用技巧篇--文件目录处理
为什么要讲这一篇,主要是因为这个在自动化测试框架或者脚本的编写的时候会用到,还是比较方便的。看上述两个函数。getcwd()、chdir()。使用 os.getcwd() 函数获得当前工作目录。使用 os.chdir()函数改变当前工作目录。所以在用chdir()函数的时候别忘记指…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...