点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
JDK是一个功能非常强大的Java开发套装,不仅给我们提供了Java运行环境,还给开发人员提供了许多有用的开发组件(位于bin目录中,如下图所示),对于我们运维人员来说,在我们出现一些内存,GC,线程等问题,JVM分析工具能够很好的帮助我们定位分析问题,我们可以利用jdk自带的jvm分析工具进行分析,比如jps,jinfo,jvisualvm,jconsole,jstat,jstack,jcmd,jmap等。当然也可以采用很多优秀的开源jvm分析工具进行分析,Arthas等。
工具 | 类型 | 作用 |
jps | 命令行 | jvm进程状态工具,列出系统上jvm进程的pid |
jinfo | 命令行 | jvm信息查看工具,查看jvm的各种配置信息 |
jvisualvm | 图形界面 | jvm综合监控工具,查看jvm基本信息,堆,栈,转储,内存,cpu以及gc等信息 |
jconsole | 图形界面 | jmx兼容的图形工具,用于监控jvm基本情况,查看MBean |
jstat | 命令行 | jvm统计监控工具,附件到一个jvm进程上手机和记录jvm的各种性能指标数据 |
jstack | 命令行 | jvm栈查看工具,可以查看jvm进程的线程和锁信息 |
jcmd | 命令行 | jvm命令行调试工具,用于向jvm进程发送调试命令 |
jmap | 命令行 | jvm堆内存分析工具,可以查看jvm进程对象直方图,类加载统计以及做堆转储操作 |
1. jps
通过jps查看Java进程列表pid。如图所示能看到ASMain的pid为2977。
2. Jinfo
通过Java进程对应的pid,使用jinfo查看jvm各种配置信息。比如jdk版本,环境,路径,虚拟机名称,编码,堆栈等信息。
3. jvisualvm
jvisualvm是一个综合监控工具,查看jvm基本信息,堆,栈,转储,内存,cpu以及gc等信息。
概述:可以看到堆栈信息以及系统参数等。
监视:CPU(使用情况,垃圾回收情况),内存(堆大小,堆使用大小),类(类装入卸载数量),线程(活动线程,守护线程数量)。
线程:当前所有线程执行状态,主要包括开启了那些线程,线程运行,休眠,等待,驻留,监视等信息。
抽样器:CPU抽样(CPU样例与线程CPU时间)与内存抽样(堆柱状图与每个线程分配)。,
Profiler:CPU与内存性能分析。
4. jstat
jstat工具以命令行的方式,允许以固定的监控频次输出 JVM 的各种监控指标,比如使用 -gcutil 输出 GC 和内存占用汇总信息,每隔 5 秒输出一次,输出 100 次.
5. jstack
通过命令行工具 jstack,也可以实现抓取线程栈的操作,进行在线分析,一般情况我们会连续抓取三次,每隔五秒。
6. jmap
jmap jvm自带命令行工具,可用于了解系统运行时的对象分布。
jmap pid 查看基本信息。
查看堆信息,jmap -heap pid。
jmap -histo pid 查看一些class的使用情况。
jmap -histo:live pid >dump.txt 输出class信息到dump文件。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129201.html
简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。在本文中我们将学习这些新特性,并用实际的例子说明在什么场景下适合使用。 这个教程包含Java开发者经常面对的几类问题: 语言编译器库工具运行时(JVM)新的Java工具 Java 8提供了一些新的命令行工具,这部分会讲解一些对开发者最有用的工具...
摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...
摘要:在架构中,堆内存和垃圾回收器这两个部分和垃圾回收相关。堆内存在的内存模型中,最重要的是要了解堆内存的概念。在垃圾回收的过程中,这些对象将被从堆内存中清除,同时它们的空间也就被回收了。 本文非原创,翻译自Java Garbage Collection introduction在Java中为对象分配和释放内存空间都是由垃圾回收线程自动执行完成的。和C语言不一样的是Java程序员不需要手动写...
摘要:学编程真的不是一件容易的事不管你多喜欢或是多会编程,在学习和解决问题上总会碰到障碍。熟练掌握核心内容,特别是和多线程初步具备面向对象设计和编程的能力掌握基本的优化策略。 学Java编程真的不是一件容易的事,不管你多喜欢或是多会Java编程,在学习和解决问题上总会碰到障碍。工作的时间越久就越能明白这个道理。不过这倒是一个让人进步的机会,因为你要一直不断的学习才能很好的解决你面前的难题...
阅读 1247·2023-01-11 13:20
阅读 1555·2023-01-11 13:20
阅读 1008·2023-01-11 13:20
阅读 1675·2023-01-11 13:20
阅读 3968·2023-01-11 13:20
阅读 2510·2023-01-11 13:20
阅读 1305·2023-01-11 13:20
阅读 3474·2023-01-11 13:20