当我们打开java的按照路径,我们会在JAVA_HOME/bin/下发现jdk已经 捆绑了许多工具。毫无疑问,java.exe和javac.exe被所有的java开发者使用,也是最受欢迎的两个工具。但是其中的大部分工具对于普通的开发者来说,很少被临幸了。但是如果我们有效的使用这些工具,将会大大缩减我们的开发时间。
以下是对java se 8JDK的工具们的一个合影,作为一枚爪哇人 ,我觉得我们都应该去了解他们一下,(至于翻不翻牌去临幸它们应人而异了)。
以下5个工具,我觉得是在众多工具中比较鹤立鸡群的。
- javap
- jvisualvm
- jcmd
- jhat
- 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
相关推荐
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么...
) <br/> Sun认证Java程序员考试(JDK1.1)由一门考试组成,可以用来测试考生对Java语言的掌握程度。考生可以使用考试大纲(exam objectives)作为准备考试的工具。 <br/>为了保证Sun客户使用的是Sun的最新...
Java 运行时环境(JRE)允许您执行 Java 应用程序,组件和小程序,而 Java 开发套件(JDK)提供了一套全面的工具,供程序员构建,运行,调试甚至记录 Java 代码。 您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及...
Java 运行时环境(JRE)允许您执行 Java 应用程序,组件和小程序,而 Java 开发套件(JDK)提供了一套全面的工具,供程序员构建,运行,调试甚至记录 Java 代码。 您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及...
java学习第一天,讲解java是什么 本章学习要点 了解 Java 语言的版本及特点 了解学习 Java 的方法 掌握 JDK 的安装 掌握环境变量的配置 熟悉 Java 程序的编写、编译和运行过程 ...15.Java程序员学习路线
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK. 因此掌握 JDK是学好Java的第一步。最主流...
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。 因此掌握 JDK是学好Java的第一步。 Lambda表达式,一种新的语言特性,能够使功能作为方法...
目的,本人认为,作为Java程序员--不是指只会使用JBuilder(或者Websphare等)工具拖拽的java操作员--我们指至少能使用Eclipse工具书写Swing代码的Java编程员,或者使用ant工具编程的Java程序员,应该熟练掌握该...
Eclipse 附带了一个标准的插件集,包括 Java 开发工具。Eclipse可以在其官方网站http://www. /中下载,Eclipse的安装非常简单,属于绿色软件,下载后直接解压缩就可以使用,解压后得到的目录结构如下图所示。 在...
每一个Java程序员都应该了解一些图形用户界面程序 设计的知识,本卷中包含了其中的基本内容部分。本章将展示如何制作窗口、如何在窗口中绘 图、如何用几何图形作画、如何用多种字体格式化文本以及如何显示图像。 第8...
熟悉语言环境及简单程序设计的使用练习,正确配置Java开发环境(Eclipse 集成开发环境的安装、配置与使用) 安装JDK Sun公司为所有的Java程序员提供了一套免费的Java开发和运行环境。可以通过IE或Netscape浏览器浏览...
本书不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。...
本视频不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,视频中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。...
本书不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。...
CPU:Intel Pentium(R)4 主频:2.40GHz 存:256MB 软件环境: 操作系统:Windows *P 编程环境: JDK 1.6 开发工具:Eclipse jdk 3.1设计方案论证 3.1.1设计思路 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏...
调试技术实务分为调试基本概念和设置,通过使用JDK自带的一些工具来调试Java程序中的疑难症状。不仅仅介绍了枯燥的程序调试技术,还深入的从操作系统实现以及Java虚拟机实现的本质出发,介绍调试工作中的工作方法...
2023年5月29日 jdk中常用的包 java.lang----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。 java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,...
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 本章学习任务...
JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握的技术。 《Java Web开发...