当前位置: 首页 > news >正文

java面试题-JVM问题排查

1.常见的Linux定位问题的工具?

常见的 Linux 定位问题的命令可以分为以下几类:

  1. 系统状态命令:包括 top、uptime、vmstat、sar 等命令,用于查看系统整体的状态,如 CPU 使用率、内存使用率、磁盘 I/O 等。

  1. 进程状态命令:包括 ps、pstree、pgrep、kill 等命令,用于查看进程的状态,如进程 ID、进程占用的资源等。

  1. 网络状态命令:包括 ifconfig、ip、netstat、ss、tcpdump 等命令,用于查看网络接口、网络连接状态、网络流量等。

  1. 文件状态命令:包括 lsof、fuser、df、du 等命令,用于查看文件句柄、文件系统状态、磁盘使用情况等。

  1. Java 应用状态命令:包括 jps、jstat、jmap、jstack、jinfo 等命令,用于查看 Java 应用程序的状态,如 Java 进程 ID、内存使用情况、线程状态等。

2.JDK自带的定位问题的工具?

  1. 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          // 输出完整的包名、类名和参数
  1. 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 次。

  1. 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 应用程序的内存信息。

  1. jstack

jstack (JVM Stack Trace Tool) 是一个命令行工具,用于生成 Java 应用程序的线程转储信息,可以帮助开发人员定位死锁等线程相关的问题。

jstack [-l] <pid>

其中,-l 表示输出详细的锁信息。<pid> 表示 Java 进程的进程 ID。如果省略 -l 参数,则只输出线程的调用栈信息。

使用示例:

使用jstack命令生成线程快照。

$ jstack 12456 > threads.txt

上述命令将生成一个名为threads.txt的文件,其中包含Java进程中所有线程的堆栈跟踪信息。

  1. 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定位问题的工具&#xff1f;常见的 Linux 定位问题的命令可以分为以下几类&#xff1a;系统状态命令&#xff1a;包括 top、uptime、vmstat、sar 等命令&#xff0c;用于查看系统整体的状态&#xff0c;如 CPU 使用率、内存使用率、磁盘 I/O 等。进程状态命令&…...

市场上有很多低代码开发平台,不懂编程的人可以用哪些?

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

Tina_Linux打包流程说明指南_new

OpenRemoved_Tina_Linux_打包流程_说明指南_new 1 概述 1.1 编写目的 介绍Allwinner 平台上打包流程。 1.2 适用范围 Allwinner 软件平台Tina v3.0 版本以上。 1.3 相关人员 适用Tina 平台的广大客户&#xff0c;想了解Tina 打包流程的开发人员。 2 固件打包简介 固件…...

JVM面试题

JVM 1.jvm的组成部分 类加载器:将javac编译的class文件加载到内存中 运行时数据区&#xff1a;将内存划分成若干个不同的区域。 执行引擎&#xff1a;负责解析命令&#xff0c;提交操作系统执行。 本地接口&#xff1a;融合不同的语言为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)

在前端的日常开发中&#xff0c;经常会使用到两个函数防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;&#xff0c;防抖函数可以有效控制在一段时间内只执行最后一次请求&#xff0c;例如搜索框输入时&#xff0c;只在输入完成后才进行请求接口。…...

Airbyte API

Airbyte API涵盖了Airbyte功能的方方面面&#xff0c;主要分类&#xff1a;Source_definition&#xff1a;来源定义&#xff0c;实现了来源的增删改查功能。Destination_definition&#xff1a;目标定义&#xff0c;实现了目标的增删改查功能。Workspace&#xff1a;工作区管理…...

vue项目使用Electron开发桌面应用

添加npm配置避免安装Electron错误 请确保您的 node 版本大于等于 18. cmd运行&#xff1a; npm config edit 该命令会打开npm的配置文件&#xff0c;请在空白处添加&#xff1a; electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-builder-binaries/ e…...

std::chrono笔记

文章目录1. radio原型作用示例2. duration原型&#xff1a;作用示例3. time_point原型作用示例4. clockssystem_clock示例steady_clock示例high_resolution_clock先说感觉&#xff0c;这个库真恶心&#xff0c;刚接触感觉跟shi一样&#xff0c;特别是那个命名空间&#xff0c;太…...

接收arp请求并发送回应的实例

本文简单介绍了arp协议,用一个实例查看收到的ARP请求,并对该请求发出ARP回应,实例有完整的源代码,使用C语言在Linux下实现,代码中有详细的注释。 1. ARP协议 ARP(Address Resolution Protocol),地址解析协议;在局域网上通过IP地址获取物理地址MAC的协议,该协议工作在数…...

【高性能计算】TVM使用TE手动优化矩阵乘法算法解析与代码解读

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

消息中间件的概念

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

窃密恶意软件Raccoon最新样本Stealer v2分析

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

足球俱乐部管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;网站是一种主要的渠道。人们通过互联网快速、准确的发布信息、获取信息。而足球俱乐部是足球职业化、专业化的一个标志&#xff0c;是足球运动员以足球谋生时&#xff0c;所被聘用的机构&#xff0c;应运时代发展&#xff0c;规模、…...

2023上半年数学建模竞赛汇总(比赛时间、难易程度、含金量、竞赛官网)

1、美国大学生数学建模竞赛等级&#xff1a;国家级是否可跨校&#xff1a;否竞赛开始时间&#xff1a;2月17日~2月21日综合难度&#xff1a;⭐⭐⭐⭐ 竞赛含金量&#xff1a;⭐⭐⭐⭐⭐竞赛官网&#xff1a;https://www.comap.com/2、MathorCup高校数学建模挑战赛---大数据竞赛…...

【python学习笔记】:PHP7 Null合并运算符

在PHP7&#xff0c;一个新的功能&#xff0c;空合并运算符(??)已被引入。它被用来代替三元运算并与 isset()函数功能结合一起使用。如果它存在并且它不是空的&#xff0c;空合并运算符返回它的第一个操作数;否则返回第二个操作数。 示例 <?php// fetch the value of $_…...

数据结构与算法——3.时间复杂度分析1(概述)

前面我们已经介绍了&#xff0c;研究算法的最终目的是如何花费更少的时间&#xff0c;如何占用更少的内存去完成相同的需求&#xff0c;并且也通过案例演示了不同算法之间时间耗费和空间耗费上的差异&#xff0c;但我们并不能将时间占用和空间占用量化。因此&#xff0c;接下来…...

FPGA学习之日常工作复位电路

最近一个多月没有写博客了&#xff0c;然后最近工作中也遇到一个复位信号的问题。问题是这样的&#xff0c;关于外部复位信号&#xff0c;之前我们的处理方式都是通过PLL产生的Lock信号作为内部的复位信号。但是由于换到A54上面没有IP核&#xff0c;所以只有不用PLL&#xff0c…...

【洛谷 P1177】【模板】快速排序 题解(快速排序+指针)

【模板】快速排序 题目描述 利用快速排序算法将读入的 NNN 个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料&#xff0c;掌握后独立完成。&#xff08;C 选手请不要试图使用 STL&#xff0c;虽然你可以…...

Pthon--自动化实用技巧篇--文件目录处理

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

想招到实干派程序员?你需要这种面试法

技术招聘中最痛的点其实是不精准。技术面试官或CTO们常常会向我们吐槽&#xff1a; “我经常在想&#xff0c;能不能把我们项目中的代码打印出来&#xff0c;作为候选人的面试题的一部分&#xff1f;” “能不能把一个Bug带上环境&#xff0c;让候选人来试试怎么解决&#xf…...

cesium常见操作:鼠标点击获取对象

目录 一、viewer.scene.pick&#xff08;获取Cartesian2&#xff09; 二、 viewer.scene.pickPosition&#xff08;获取Cartesian3&#xff09; 三、viewer.scene.drillPick&#xff08;穿透拾取&#xff0c;获取所有对象&#xff09; 四、viewer.scene.globe.pick&#xf…...

【玩转c++】git的安装和使用以及可视化处理

本期主题&#xff1a;git的安装和使用&#xff08;windows环境&#xff09;博客主页&#xff1a;小峰同学分享小编的在Linux中学习到的知识和遇到的问题 小编的能力有限&#xff0c;出现错误希望大家不吝赐1.两个工具介绍第一个工具git&#xff0c;链接gitee或者github等代码托…...

第三阶段02-Mybatis框架

Mybatis框架 Mybatis框架是目前最流行的数据持久层框架, 使用Mybatis框架可以帮助程序员自动生成JDBC代码, 程序员只需要通过注解或xml配置文件提供需要执行的SQL语句,以及对象和表的映射关系, Mybatis框架会根据此映射关系和SQL自动生成出JDBC代码,从而提高开发效率 Mybatis框…...

基于超像素的多视觉特征图像分割算法研究

0.引言 背景&#xff1a; 经典聚类算法&#xff1a;Kmeans、FCM 现有问题&#xff1a; 1&#xff09;现有算法大都是基于单一的视觉特征而设计的&#xff0c;eg&#xff1a;基于颜色特征的分割。 2&#xff09;没有考虑像素周围的空间信息&#xff1b;分割结果&#xff1a;多噪…...

mysql的三大日志

摘自https://blog.csdn.net/chuige2013/article/details/123027580 一. 初步认识 binlog二进制日志 redolog undolog 二. binlog binlog记录写入行操作 作用 1&#xff09;、主从复制&#xff1a;在Master端开启binlog&#xff0c;然后将binlog发送到各个Slave端&#xff0c;S…...

API接口及社区电子商务化的解释

API是应用程序的开发接口&#xff0c;在开发程序的时候&#xff0c;我们有些功能可能不需要从到到位去研发&#xff0c;我们可以拿现有的开发出来的功能模块来使用&#xff0c;而这个功能模块&#xff0c;就叫做库(libary)。比如说&#xff1a;要实现数据传输的安全&#xff0c…...

[蓝帽杯 2021]One Pointer PHP

知识点&#xff1a;php 数组整型溢出&#xff0c;open_basedir 绕过分析 利用数组整型溢出绕过&#xff0c;因为PHP 会对溢出的数字处理为 float 类型。 <?php include "user.php"; if($userunserialize($_COOKIE["data"])){$count[$user->count]…...

【JAVA】xxl-job服务搭建

xxl-job服务搭建 1.下载xxl-job项目 https://github.com/xuxueli/xxl-job 2.数据库表创建 3.修改配置 注意&#xff1a;这是两个项目&#xff0c;一个是xxl-job前台&#xff0c;一个是xxl-job执行器&#xff0c;找到这两个项目得配置文件&#xff0c;修改配置。 配置文件地址…...

毕业设计 基于STM32单片机生理监控心率脉搏TFT彩屏波形曲线设计

基于STM32单片机生理监控心率脉搏TFT彩屏波形曲线设计1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STM32F103C8T6核心系统电路设计2.2心率检测电路设计2.3 TFT2.4寸彩屏电路设计3、部分代码展示3.1 ADC初始化3.2 获取ADC采样值3.3 LCD引脚初始化3.3 在LCD指定位置显…...

网站建设课程职业教育机构/自媒体平台收益排行榜

一、初识Python 1、Python 安装 1 1、下载安装包 2 https://www.python.org/downloads/ 3 2、安装 4 默认安装路径&#xff1a;C:\python27 5 3、配置环境变量 6 【右键计算机】--》【属性】--》【高级系…...

python3网站开发/网站seo推广计划

在虚拟机中配置数据库的远程访问与本机配置类似&#xff0c;需要注意的是虚拟机网络设置 选择虚拟机设置--硬件--网络适配器&#xff0c;选择桥接模式&#xff1a;直接连接物理网络&#xff0c;不可选用主机模式&#xff08;与主机共享专用网络&#xff09;&#xff0c;其他模式…...

苏州建设网站哪家好/惠州百度关键词优化

第一次在别人指导下完成STM32 MCU程序烧写&#xff0c;连夜记录下&#xff0c;以免下次忘了 1&#xff09;安装Keil MDK511 2&#xff09;安装ST Link下载器驱动&#xff0c;重启PC 3&#xff09;打开Keil v5&#xff0c;加载工程文件 4&#xff09;load pack&#xff08;Keil…...

湖北省建设安全协会网站/seo计费系统源码

一、序言 Opencv中提供Stitcher类&#xff0c;实现了多图像自动拼接&#xff0c;Opencv是开源的&#xff0c;程序实现的源代码都在Opencv安装文件中&#xff0c;以及Opencv提供的函数查询手册和Opencv教程都可以在官网上下载的到&#xff0c;通过这些文档和代码&#x…...

做网站+利润/百度推广关键词排名规则

在控件的KeyPress事件中编写如下代码&#xff1a; if (e.KeyChar (char)13) {e.Handled true;SendKeys.Send("{TAB}"); }转载于:https://www.cnblogs.com/swtseaman/archive/2011/05/05/2037184.html...

在线A视频做爰网站/看到招聘游戏推广员千万别去

原文出处&#xff1a; 小胡子哥的博客&#xff08;Barret李靖&#xff09; 前后端分工协作是一个老生常谈的大话题&#xff0c;很多公司都在尝试用工程化的方式去提升前后端之间交流的效率&#xff0c;降低沟通成本&#xff0c;并且也开发了大量的工具。但是几乎没有一种方式是…...