美文网首页
JDK-bin目录下部分工具用途和使用方法整理

JDK-bin目录下部分工具用途和使用方法整理

作者: 业松 | 来源:发表于2018-11-13 20:29 被阅读56次

还是读《深入理解Java虚拟机》一书,提到了JDK目录下的很多已有的监控定位Java虚拟机运行状态的工具,好像这方面的资料不多,就连带着其他一些JDK工具一起整理下来。写着写着发现太多了,而且基本没用过,所以只记录部分我能理解的工具。另外要说下这些工具大家虽然没有直接用到,但是实际上很多工具在我们的IDE和其他开发工具链中是有用到的,例如用来debug的jdb。

  • java
    用来运行java程序的命令。用的不多,一般Java写的桌面软件都会有shell脚本或exe文件启动。偶尔也有项目组内部写的小Java软件会用到。
    使用方法:java [options] -jar filename [args]

  • javac
    初学Java都会用到的命令,用来把java文件编译成class文件。
    使用方法:javac @sourcefiles

  • javadoc
    用来把java文件中的文档注释转化成HTML文件。
    使用方法:javadoc {packages|source-files} [options] [@argfiles]

  • javah
    C 头文件和stub生成器,用于写本地化方法,例如生产JNI样式的头文件,好像我都忘光了。
    使用方法:javah [ options ] fully-qualified-class-name ...

  • javap
    反编译工具,没想到JDK中居然自带反编译工具,不过有各种集成的工具可能很少会用这个命令行来反编译。
    使用方法:javap [options] classfile...

  • jar
    这个用的稍微多点,把项目打包成jar包。
    使用方法:jar cvf hello.jar hello

  • jconsole
    一个可视化的java监视工具。
    使用方法:直接在终端输入jconsole回车。

  • jdb
    用来debug的命令行工具,但是用命令debug真的不想学。。。

  • jps
    和ps命令类似,用来查看java进程。

 ts@ts-OptiPlex-3020  ~  jps -l
9768 sun.tools.jps.Jps
9515 com.intellij.idea.Main
  • jstat
    虚拟机统计信息监视工具,比如可以监视虚拟机的gc情况。
 ts@ts-OptiPlex-3020  ~  jstat -gc 9515
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
8704.0 8704.0 4275.3  0.0   69952.0  31414.3   341532.0   204918.1  240780.0 229127.4 33788.0 31464.7     38    0.668  12      0.400    1.068
  • jinfo
    用来查看虚拟机的各项配置信息,但是已经不能用了,这个感觉还挺有用的可惜了。

  • jmap
    可以用来打印内存快照,估计很多dump工具就是继承的这个。

 ts@ts-OptiPlex-3020  ~  jmap -dump:format=b,file=jconsole-map 10623
Dumping heap to /home/ts/jconsole-map ...
Heap dump file created
  • jhat
    上面打印处了dump文件之后,可以用jhat命令来查看,直接jhat 文件名 即可。
  ts@ts-OptiPlex-3020  ~  jhat jconsole-map 
Reading from jconsole-map...
Dump file created Tue Nov 13 20:14:30 CST 2018
Snapshot read, resolving...
Resolving 88883 objects...
Chasing references, expect 17 dots.................
Eliminating duplicate references.................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

启动好后在浏览器打卡localhost:7000来打开页面。


jhat.png

分析内存泄漏主要在Show heap histogram里面定位。

  • jstack
    查看线程堆栈信息,可以显示关于锁的附加信息,对ANR问题很有帮助。
ts@ts-OptiPlex-3020  ~  jstack -l 10623
2018-11-13 20:23:00
Full thread dump OpenJDK 64-Bit Server VM (25.131-b11 mixed mode):

"Attach Listener" #18 daemon prio=9 os_prio=0 tid=0x00007f0bb4001000 nid=0x2b24 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"DestroyJavaVM" #16 prio=5 os_prio=0 tid=0x00007f0bec00a000 nid=0x2980 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"AWT-EventQueue-0" #14 prio=6 os_prio=0 tid=0x00007f0bec41c800 nid=0x2997 waiting on condition [0x00007f0b805fa000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x0000000084af4650> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at java.awt.EventQueue.getNextEvent(EventQueue.java:554)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:170)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

   Locked ownable synchronizers:
    - None
...

相关文章

  • JDK-bin目录下部分工具用途和使用方法整理

    还是读《深入理解Java虚拟机》一书,提到了JDK目录下的很多已有的监控定位Java虚拟机运行状态的工具,好像这方...

  • OpenSSL 总结

    本系列文章是对 OpenSSL 相关知识和使用方法的总结。 目录 OpenSSL 简介 用途 命令格式 命令分类摘...

  • 【亲子时间管理】第22讲分享

    【工具】如何做记录? 两种适用于孩子的记录工具『一日时间记录表和打卡表』的用途和使用方法。 1、一日时间记录表,客...

  • Sed学习整理

    结合自己使用需要,主要根据三十分钟学会SED简化整理所得。 用途 sed是一个文本解析转换工具,主要用于以下用途:...

  • iView Loader使用

    0 目录 背景 用途 使用方法3.1.安装3.2.配置3.3.说明 最佳实践4.1.timeline组件eslin...

  • grep的使用方法

    grep的使用方法 基本使用方法 grep是一种使用正则表达式的多用途文本搜索工具。 通常的使用结构如: 假设te...

  • 笔记类APP推荐:印象笔记

    1. 有什么用? 印象笔记用途 (整理和思考的工具) 印象笔记有很多用法,例如,写日记,随笔...

  • 艾神家咖啡告诉你,咖啡滤纸原来还有这么多的用处!

    咖啡滤纸其实不仅仅是可以用来过滤咖啡, 还有其它很多的用途! 只要知道它的使用方法, 作为多用途的工具可以在各种各...

  • 六年级上册科学知识点

    六年级科学上册知识点整理 单元一:《工具和机械》 第一课使用工具 1.不同的工具有不同的(用途),不同的工具有不同...

  • 1.3 Hello, Cargo

    一 cargo用途 构建系统和包管理工具,可以自动下载你的项目依赖库 二 查看cargo版本 三 创建项目目录 查...

网友评论

      本文标题:JDK-bin目录下部分工具用途和使用方法整理

      本文链接:https://www.haomeiwen.com/subject/jwalfqtx.html