美文网首页
JDK的bin下的工具有哪些功能

JDK的bin下的工具有哪些功能

作者: 这个该叫什么呢 | 来源:发表于2018-08-23 11:19 被阅读0次

    Java生产环境下问题排查

    Java内存泄漏分析系列之一:使用jstack定位线程堆栈信息

    Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析

    Java内存泄漏分析系列之三:jstat命令的使用及VM Thread分析

    Java内存泄漏分析系列之四:jstack生成的Thread Dump日志线程状态

    Java内存泄漏分析系列之五:常见的Thread Dump日志案例分析

    Java内存泄漏分析系列之六:JVM Heap Dump(堆转储文件)的生成和MAT的使用

    查看JVM参数

    jps -l 查看所有正在运行的Java程序,同时显示启动类类名,获取到PID

    4706 org.apache.catalina.startup.Bootstrap
    5023 sun.tools.jps.Jps
    

    jinfo -flags PID 查看运行时进程参数与JVM参数

    Attaching to process ID 28987, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.171-b11
    Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=132120576 -XX:MaxHeapSize=2092957696 -XX:MaxNewSize=697303040 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=44040192 -XX:OldSize=88080384 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
    Command line:  -Dspring.config.location=application.properties -Dspring.profiles.active=staging
    

    java -XX:+PrintFlagsFinal -version 查看当前虚拟机默认JVM参数

    查看即时GC状态

    jstat -gc PID 1000 10 每秒查看一次gc信息,共10次

    输出比较多的参数,每个字段的解释参看 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

    S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
    512.0  512.0   15.3   0.0    4416.0   1055.2   11372.0     7572.5   14720.0 14322.5 1664.0 1522.8     40    0.137   8      0.039    0.176
    

    期间可能碰到提示sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 24.181-b01. Target VM is 25.171-b11的问题,原因在于安装了多个版本,使用whichls -l可简介定位到与当前执行Java程序相同的Java版本

    内存问题

    内存泄露导致OOM?内存占用异常的高?这是生产环境常常出现的问题,Java提供dump文件供我们对内存里发生过的事情进行了记录,我们需要借助一些工具从中获取有价值的信息。

    导出Dump文件

    1. 提前对Java程序加上这些参数印dump文件 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./
    2. 对正在运行的程序使用jmapjmap -dump:format=b,file=heap.hprof PID

    分析Dump文件

    如果Dump文件不太大的话,可以传到 http://heaphero.io/index.jsp 来分析

    文件比较大,且想进行更加系统的分析,推荐使用MAT分析,有如下几种常用查看方式

    1. 首页中的【Leak Suspects】能推测出问题所在
    2. 点击【Create a histogram from an arbitrary set of objects】查到所有对象的数量
    3. 右键点击某个对象【Merge Shortest Paths to GC Roots】-> 【exclude all phantom/weak/soft etc. references】能查询到大量数量的某个对象是哪个GC ROOT引用的

    线程问题

    任务长时间不退出?CPU 负载过高?很可能因为死循环或者死锁,导致某些线程一直执行不被中断,但是不报错是最烦人的,所以日志里看不到错误信息,并且又不能用dump文件分析,因为跟内存无关。这个时候就需要用线程分析工具来帮我们了。

    导出jstack文件

    使用jstack PID > 文件,如果失败请加-F参数,如果还失败请使用Java程序启动时使用的用户执行jstack

    排查步骤

    1. top 查看到哪个java程序负载高
    2. top -p PID -H 查看该进程所有进程的运行状态
    3. 记录下高负载的线程ID,printf "&x" PID转换成16进制
    4. jstack PID > 文件
    5. 在jstack文件中用转换成16进制之后的线程ID查询线程运行堆栈
    6. 从堆栈中了解到线程在执行什么任务,并结合业务与代码判断问题所在

    以下转载自: http://www.codingwhy.com/view/858.html

    Java开发人员肯定都知道JDK的bin目录中有“java”、“javac”这两个命令行工具,但并非所有的程序员都了解过JDK的bin目录之中的其他工具的作用。

    这些工具被Sun公司作为“礼物”附赠给JDK的使用者,并在软件的使用说明中把他们申明为“没有技术支持并且是试验性质的(unsupported and experimental)”的产品,但事实上,这些工具都非常的稳定且功能强大,能在处理应用程序性能问题、定位故障时发挥很大的作用。

    细心的可能会发现,这些工具都非常小,是因为这些工具大多是jdk/lib/tools.jar类库的一层包装而已,他们主要的功能代码是在tools类库中实现的。

    Java故障检修,程序概要分析,监视和管理工具

    工具名称 用途
    jvisualvm 一个图形化的Java虚拟机 参考: Java jvisualvm简要说明
    jconsole java监视台和管理控制台 参考: 如何利用 JConsole观察分析Java程序的运行,进行排错调优 https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.vm.80.doc/docs/jconsole.html
    jps JVM Process Status进程状态工具。列出目标系统的HotSpot JJVM 可以列出本机所有java进程的pid
    jstat 按照命令行的具体要求记录和收集一个JVM的性能数据
    jstatd JVM jstat 的守护进程
    jmc Java任务控制工具(Java Mission Control),主要用于HotSpot JVM的生产时间监测、分析、诊断。

    故障检测和修理工具

    工具名称 用途
    jinfo 配置或打印某个Java进程VM flag
    jhat 堆储存查看器
    jmap Java内存图
    jsadebugd Java的 Serviceability Agent Debug的守护进程
    jstack Java堆栈跟踪

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

    基本工具

    这些工具是JDK的基础,用这些工具来编写应用程序。

    工具名称 用途
    javac Java语言编译器
    java Java应用程序启动器
    javaw Java运行工具,用于运行.class字节码文件或.jar文件,但不会显示控制台输出信息,适用于运行图形化程序。
    javadoc Java API文档生成器
    apt java 注解处理器 「深入Java」Annotation注解
    appletviewer java applet小程序查看器
    jar java文件压缩打包工具
    jdb Java调试器
    javah C头文件和stub生成器,用于写本地化方法,例如生产JNI样式的头文件
    javap class文件反编译工具
    extcheck 用于检测jar包中的问题
    jcmd Java命令行(Java Command),用于向正在运行的JVM发送诊断命令请求。

    安全工具

    这些工具用于设置系统的安全规则和生产可以工作在远端的安全规则下的应用程序

    工具名称 用途
    keytool 管理密钥库和证书
    jarsigner 生产和校验JAR签名
    policytool 有用户界面的规则管理工具
    kinit 用于获得和缓存网络认证协议Kerberos 票证的授予票证
    klist 凭据高速缓存和密钥表中的 Kerberos 显示条目
    ktab 密钥和证书管理工具

    Java国际化工具

    这些工具可以帮助你创建可本地化的应用程序

    native2ascii

    远程方法调用工具

    这些工具可以帮助创建可以和web和网络交互的应用程序

    工具名称 用途
    rmic 生成远程对象的stubs and skeletons(存根和框架)
    rmid Java远程方法调用(RMI:Remote Method Invocation)活化系统守护进程
    rmiregistry Java远程对象注册表
    serialver 返回类的 serialVersionUID
    java-rmi Java远程方法调用(Java Remote Method Invocation)工具,主要用于在客户机上调用远程服务器上的对象

    Java IDL and RMI-IIOP 工具

    这些工具用于创建使用OMG-Standard IDL 和 CORBA/IIOP 的应用程序

    工具名称 用途
    tnameserv Java IDL瞬时命名服
    idlj 生产映射到OMG IDL接口可以使Java应用程序使用CORBA的.java文件
    orbd 为客户可以在CORBA环境下透明的定位和调用服务器的稳定的对象提供支持
    servertool 为应用程序提供易于使用的接口用于注册,注销,启动,关闭服务器

    Java部署工具

    工具名称 用途
    pack200 使用java gzip压缩工具将JAR文件转换为压缩的pack200文件,生产打包文件是高度压缩的JAR包,可以直接部署,减少下载时间
    unpack200 解包pack200文件为JARs

    Java web工具

    工具名称 用途
    javaws Java web 启动命令行工具
    schemagen Java构架的XML Schema生成器
    wsgen 生成 JAX-WS
    wsimport 生成 JAX-WS
    xjc 绑定编译器

    Java脚本工具

    工具名称 用途
    jrunscript 运行脚本

    其他工具

    工具名称 用途
    jabswitch Java Access Bridge Switch的简称,用于控制Java访问桥的开/关。Java访问桥是一种技术,让Java应用程序实现Accessibility API,以供Microsoft Windows系统的辅助技术访问。
    javafxpackager JavaFX打包工具

    相关文章

      网友评论

          本文标题:JDK的bin下的工具有哪些功能

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