知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技  > 软件

几款Java开发者必备常用的工具,准点下班不在话下!

发表时间:2022-03-25来源:网络

本文来自华为云社区,作者:breakDraw

常言说得好:工欲善其事,必先利其器。好的工具可以让工作事半功倍,我们日常开发工作更是如此,话不多说,今天我们就以一问一答的形式认识几款Java工具!Let's go!

问:检查内存泄露的工具有? 答:jmap生成dump转储文件,jhat可视化查看。 问:某进程CPU使用率一直占满,用什么工具可以排查? 答:top -Hp pid找到最占CPU的线程 然后jstack来查找那个线程此时所处的堆栈,确定问题发生位置。

各工具详细介绍

 jstack

全称:JVM Stack Trance 作用:查看某个java进程的堆栈情况, 可用于确认死锁、IO等待、死循环等问题。 命令用法:

jstack pid

查看死锁例子如下图,找到wait的lock和已被锁的lock

查看等待IO例子:

 jstat

作用:查看进程中内存使用情况,但只能给出一些简单统计数据

统计加载了多少类以及占用空间 jstat -class pid

统计编译了多少文件 jstat -compiler 10

问:jstat -gcutil {pid} 2000 可以每隔2秒,对pid进程打印内存使用统计信息。 gcutil的输出如下: 里面哪个百分比如果长期处于99%-100%会有OMM风险?(OutOfMemoryError) 答:如果E和O即新生代、老年代内存区一直都处于满的状态,则很有可能会引发OMM风险。就像下面这个。

 jmap

全称:JVM Memory Map 作用:生成进程的内存堆快照 当需要看一下进程里是什么东西占用了过多内存时, 可以用jmap打印一下堆快照。 命令用法:

打印堆快照:

jmap -dump:file=./dumpfile.dump 进程pid

查看特定类所占用的情况:

jmap -histo:live 进程pid | grep 类名 问:用jmap检查内存泄漏实例 我分了3次,每个1h调用jmap查看进程的内存实例,查看该时刻各对象数量 第一次查看情况如下: 第二次隔了2个小时,查看情况如下: 请问哪个对象可能有内存泄漏风险? 答:ObjectA可能有泄露, 因为他的对象数量增加最快,说明对象一直在增加且很多无法进行gc释放。

jhat

全称:JVM Heap Analysis Tool 和jmap配合, 可以解析jmap生成的堆快照, 支持生成1个web进程供我们分析和查看。 命令用法: jhat -J-Xmx515M dumpfile.dump 此时就会启动1个webServer,然后我们去访问就行了

jdb

全称:Java Debugger 作用:用来对core文件和正在运行的Java进程进行实时地调试,类似于c++里的gdb 常见用法: 启动进程并调试: jdb -classpath . Test 至二级调试某进程:  jdb -attach 8000 -sourcepath /Users/wefit/Development/study/java/jtest/src/

jcmd

作用:多功能的工具,可以用它来导出堆、查看Java进程、导出线程信息、执行GC、还可以进行采样分析,可以理解为1个性能调优时用的工具。 常见命令: 查看 当前机器上所有的 jvm 进程信息: jcmd -l查看指定进程的性能统计信息:jcmd pid PerfCounter.print列出当前运行的 java 进程可以执行的操作: jcmd PID help查看线程堆栈信息:jcmd PID Thread.print查看堆内存信息:jcmd PID GC.heap_dump FILE_NAME

jps

简单记法:JVM process status 全名:Java Virtual Machine Process Status Tool 作用:显示 当前系统用户 的 所有 Java进程情况及其进程号 常用命令: 查看进程jvm参数:jps -v输出程序main class的完整package名或程序的jar文件完整路径名:jps -l输出传递给main方法的参数: jps -m

jinfo

全名:jvm infomation 作用:和jps功能类似, 但是支持根据指定pis查看指定进程 可以查看JVM参数、系统参数、调整jvm参数但不支持查看java程序的内存使用情况

javap

把java字节码文件反汇编为Java源码文件。

javac

java编译工具 javac的执行过程:

JDK可视化工具

jconsole

可监控jvm,即可监控本地jvm也可监控远程jvm,管理应用程序,可以检查死锁等诸多问题。

jvisualvm

jvisualvm可以监控远程服务器的运行状态可以在java程序运行起来后再运行, 通过某些协议连接到java进程中。运行时, 可以不需要配置配置环境、虚拟机参数等。

-END-

为什么程序员如此热爱TypeScript ?

不足0.01立方米就报警,智慧水表如何读出独居老人的生活异常?

华为+克而瑞 | 中国房地产数字化深度解读专题 ①

云原生2.0如何利好智慧园区?

●《智慧园区数字平台开发300问.pdf》发布,学完你就是小专家!

重磅!《智慧园区设计标准》(征求意见稿)全文发布,可下载!

智慧园区南向认证合作伙伴及设备清单

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜