`

5个java程序员应该掌握的JDK工具

 
阅读更多

   当我们打开java的按照路径,我们会在JAVA_HOME/bin/下发现jdk已经 捆绑了许多工具。毫无疑问,java.exe和javac.exe被所有的java开发者使用,也是最受欢迎的两个工具。但是其中的大部分工具对于普通的开发者来说,很少被临幸了。但是如果我们有效的使用这些工具,将会大大缩减我们的开发时间。

  以下是对java se 8JDK的工具们的一个合影,作为一枚爪哇人 ,我觉得我们都应该去了解他们一下,(至于翻不翻牌去临幸它们应人而异了)。

 

 以下5个工具,我觉得是在众多工具中比较鹤立鸡群的。

  1. javap
  2. jvisualvm
  3. jcmd
  4. jhat
  5. Oracle Java Mission Control

1.javap

作为一个java字节码反编译工具。下面我们编译一下hello.java,并将它反编译。

public class Hello
{
	public static void main(String[] args){
		System.out.println("hello world!");
	}
}

 当我们直接使用javap而不带任何附加参数时输入以下内容:默认会打印java类的包名、共有和保护的字段与方法。

E:\>javap Hello
Compiled from "Hello.java"
public class Hello extends java.lang.Object{
    public Hello();
    public static void main(java.lang.String[]);
}

 如果我们对javap添加-c参数,我们将会得到该java类的包含jvm指令的信息。

E:\>javap -c Hello
Compiled from "Hello.java"
public class Hello extends java.lang.Object{
public Hello();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   3:   ldc     #3; //String hello world!
   5:   invokevirtual   #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   8:   return

}

 2、jvisualvm

jvisualvm是java虚拟机的监控和分析工具。它提供了一个图形化接口和java应用程序可视化的运行时信息。它本质上是使用jmap、jinfo、jstat、jstack、JConsole等来收集和分析数据。jvisualvm是跟随JDK6update7一块发布。现在又很多的插件可以继承到jvisualvm上,来让它功能更加强大。当我们的java应用程序遇到性能问题,jvisualvm便可大显身手。



 3.jcmd

jcmd被用做向jvm发送诊断命令请求,当我们直接运行jcmd而不附加任何参数,它默认会显示当前正在运行的JVM 进程。它等价于jps工具。

4.jhat

jhat是一个java堆的分析工具。它被用于解析和浏览java堆的dump文件。jhat能够解析java 堆dump信息并启动一个web服务。然后我们就可以通过浏览器来浏览java堆的dump信息。jhat支持对象查询语言(Object query language)和一些pre-designed 查询。

使用jmap来生成java堆的dump信息(即java应用程序的堆快照和对象统计信息),我们需要使用-dump选项。

jmap的选项:

C:\Users\Administrator>jmap
Usage:
    jmap -histo <pid>
      (to connect to running process and print histogram of java object heap
    jmap -dump:<dump-options> <pid>
      (to connect to running process and dump java heap)

    dump-options:
      format=b     binary default
      file=<file>  dump heap to <file>

    Example:       jmap -dump:format=b,file=heap.bin <pid>

 

以下是使用jmap生成pid为796的java程序的对象统计信息: 从输出我们可以看到内存中的实例数量和合计。

C:\Users\Administrator>jmap -histo 796 > E:/1.txt
 
num     #instances         #bytes  class name
----------------------------------------------
   1:         51249        6694928  <constMethodKlass>
   2:         33095        4723304  [C
   3:         84538        4457792  <symbolKlass>
   4:         51249        4104960  <methodKlass>
   5:          4563        2661744  <constantPoolKlass>
   6:          4563        1922624  <instanceKlassKlass>
   7:          3683        1542688  <constantPoolCacheKlass>
   8:          6941        1300904  [B
   9:         35773         858552  java.lang.String
  10:          8603         585184  [I
 .... ....

 jmap的另一个重要功能是获取java应用程序的当前堆快照信息

C:\Users\Administrator>jmap -dump:format=b,file=E:/2.hprof 796
Dumping heap to E:\2.hprof ...
Heap dump file created

 

以下是jhat可用的选项:

C:\Users\Administrator>jhat
ERROR: No arguments supplied
Usage:  jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>

        -J<flag>          Pass <flag> directly to the runtime system. For
                          example, -J-mx512m to use a maximum heap size of 512MB
        -stack false:     Turn off tracking object allocation call stack.
        -refs false:      Turn off tracking of references to objects
        -port <port>:     Set the port for the HTTP server.  Defaults to 7000
        -exclude <file>:  Specify a file that lists data members that should
                          be excluded from the reachableFrom query.
        -baseline <file>: Specify a baseline object dump.  Objects in
                          both heap dumps with the same ID and same class will
                          be marked as not being "new".
        -debug <int>:     Set debug level.
                            0:  No debug output
                            1:  Debug hprof file parsing
                            2:  Debug hprof file parsing, no server
        -version          Report version number
        -h|-help          Print this help and exit
        <file>            The file to read

For a dump file that contains multiple heap dumps,
you may specify which dump in the file
by appending "#<number>" to the file name, i.e. "foo.hprof#3".

All boolean options default to "true"

 现在我们可以用jhat来分析jmap导出的java应用程序堆快照信息:

C:\Users\Administrator>jhat E:/2.hprof
Reading from E:/2.hprof...
Dump file created Fri Nov 21 15:27:10 CST 2014
Snapshot read, resolving...
Resolving 213174 objects...
Chasing references, expect 42 dots..........................................
Eliminating duplicate references..........................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

 解析完成后,我们可以再浏览器中输入:http://127.0.0.1:7000/来查看分析结果。



 

 

5.Oracle Java Mission Control

Java Mission Control是随同java JDK 7 update 40一同发布,同一了Hotspot、JRockit VMs,现在JRockit Mission Control也可以在标准的Java SE 中使用。但是目前只是开发和评估时free的,要是生产使用还是需要购买Oracle的license。

 Java Mission Control是同Java Flight Recorder一同工作的。可以同Hotspot VM一同工作并记录关键的数据和事件,一旦出现问题,这些数据可以用来分析问题。

启动Java Mission Control 工具利用指令jmc



 

 

  • 大小: 82.7 KB
  • 大小: 41.7 KB
  • 大小: 35.7 KB
  • 大小: 127.8 KB
  • 大小: 58.6 KB
分享到:
评论

相关推荐

    一个Java程序员应该掌握的10项技能

    2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么...

    Java程序员考试

    ) &lt;br/&gt; Sun认证Java程序员考试(JDK1.1)由一门考试组成,可以用来测试考生对Java语言的掌握程度。考生可以使用考试大纲(exam objectives)作为准备考试的工具。 &lt;br/&gt;为了保证Sun客户使用的是Sun的最新...

    JAVA 开发环境 Java SE Development Kit (JDK) 16.0.1 x64 免费下载.zip

    Java 运行时环境(JRE)允许您执行 Java 应用程序,组件和小程序,而 Java 开发套件(JDK)提供了一套全面的工具,供程序员构建,运行,调试甚至记录 Java 代码。 您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及...

    JAVA 开发环境 Java SE Development Kit (JDK) 16.0.1 x64.zip

    Java 运行时环境(JRE)允许您执行 Java 应用程序,组件和小程序,而 Java 开发套件(JDK)提供了一套全面的工具,供程序员构建,运行,调试甚至记录 Java 代码。 您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及...

    java是什么.avi

    java学习第一天,讲解java是什么 本章学习要点 了解 Java 语言的版本及特点 了解学习 Java 的方法 掌握 JDK 的安装 掌握环境变量的配置 熟悉 Java 程序的编写、编译和运行过程 ...15.Java程序员学习路线

    jdk-7u80-windows-x64

    JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK.  因此掌握 JDK是学好Java的第一步。最主流...

    jdk-8u221-windows-x64.exe

    JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。  因此掌握 JDK是学好Java的第一步。  Lambda表达式,一种新的语言特性,能够使功能作为方法...

    详解Observer Pattern(观察者模式)在Java中的使用原理

    目的,本人认为,作为Java程序员--不是指只会使用JBuilder(或者Websphare等)工具拖拽的java操作员--我们指至少能使用Eclipse工具书写Swing代码的Java编程员,或者使用ant工具编程的Java程序员,应该熟练掌握该...

    Java程序设计基础:使用Eclipse创建和运行Java程序.pptx

    Eclipse 附带了一个标准的插件集,包括 Java 开发工具。Eclipse可以在其官方网站http://www. /中下载,Eclipse的安装非常简单,属于绿色软件,下载后直接解压缩就可以使用,解压后得到的目录结构如下图所示。 在...

    Java核心技术 卷Ⅰ:基础知识 【中文】(第八版)

    每一个Java程序员都应该了解一些图形用户界面程序 设计的知识,本卷中包含了其中的基本内容部分。本章将展示如何制作窗口、如何在窗口中绘 图、如何用几何图形作画、如何用多种字体格式化文本以及如何显示图像。 第8...

    JAVA实验报告一.docx

    熟悉语言环境及简单程序设计的使用练习,正确配置Java开发环境(Eclipse 集成开发环境的安装、配置与使用) 安装JDK Sun公司为所有的Java程序员提供了一套免费的Java开发和运行环境。可以通过IE或Netscape浏览器浏览...

    张孝祥Java就业培训教程.pdf

    本书不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。...

    初学者学习java

    本视频不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,视频中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。...

    张孝祥java就业培训教程(完整版电子书)-书内源码及PPT文档

    本书不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。...

    java课程设计报告贪吃蛇游戏设计.doc

    CPU:Intel Pentium(R)4 主频:2.40GHz 存:256MB 软件环境: 操作系统:Windows *P 编程环境: JDK 1.6 开发工具:Eclipse jdk 3.1设计方案论证 3.1.1设计思路 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏...

    应用程序调试技术之Java篇 视频 ppt

     调试技术实务分为调试基本概念和设置,通过使用JDK自带的一些工具来调试Java程序中的疑难症状。不仅仅介绍了枯燥的程序调试技术,还深入的从操作系统实现以及Java虚拟机实现的本质出发,介绍调试工作中的工作方法...

    java期末复习第讲面向对象程序设计.pptx

    2023年5月29日 jdk中常用的包 java.lang----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。 java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    1.7.1 创建第一个Java Web项目 1.7.2 将图片输出到JSP页面之中 1.8 疑难解惑 1.8.1 Tomcat端口被占用导致不能启动 1.8.2 Eelipse没有创建JSP项 1.9 精彩回顾 第2章 JavaWeb开发必修课 ——JSP语法 2.1 本章学习任务...

    java web开发技术大全

    JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握的技术。 《Java Web开发...

Global site tag (gtag.js) - Google Analytics