关于java:几款Java开发者必备常用的工具准点下班不在话下

12次阅读

共计 1859 个字符,预计需要花费 5 分钟才能阅读完成。

摘要:一问一答的模式轻松学习把握 java 工具。

以一问一答的模式学习 java 工具

Q:查看内存泄露的工具有?
A:jmap 生成 dump 转储文件,jhat 可视化查看。

Q:某过程 CPU 使用率始终占满,用什么工具能够排查?
A:
top -Hp pid 找到最占 CPU 的线程
而后 jstack 来查找那个线程此时所处的堆栈,确定问题产生地位。

§ 各工具具体介绍

§ jstack

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

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

  • 查看期待 IO 例子:

§ jstat

全称:
作用:
查看过程中内存应用状况,但只能给出一些简略统计数据

  • 统计加载了多少类以及占用空间 jstat -class pid
  • 统计编译了多少文件 jstat -compiler 10

Q:jstat -gcutil {pid} 2000 能够每隔 2 秒,对 pid 过程打印内存应用统计信息。
gcutil 的输入如下

外面哪个百分比如果长期处于 99%-100% 会有 OMM 危险?(OutOfMemoryError)
A:
如果 E 和 O 即新生代、老年代内存区始终都处于满的状态,则很有可能会引发 OMM 危险。就像上面这个。

§ jmap

全称:JVM Memory Map
作用:生成过程的内存堆快照
当须要看一下过程里是什么货色占用了过多内存时,能够用 jmap 打印一下堆快照。
命令用法:

  • 打印堆快照:jmap -dump:file=./dumpfile.dump 过程 pid
  • 查看特定类所占用的状况:jmap -histo:live 过程 pid | grep 类名

Q:用 jmap 查看内存透露实例
我分了 3 次,每个 1h 调用 jmap 查看过程的内存实例,查看该时刻各对象数量
第一次查看状况如下:

第二次隔了 2 各小时,查看状况如下:

请问哪个对象可能有内存透露危险?
A:
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

Q:

  • jvisualvm 能够监控近程服务器的运行状态
  • 能够在 java 程序运行起来后再运行,通过某些协定连贯到 java 过程中。
  • 运行时,能够不须要配置配置环境、虚拟机参数等。

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0