(一) JConsole
JConsole使用JVM的可扩展性Java管理扩展(JMX)工具来提供关于运行于Java平台的应用程序的性能和资源消耗的信息。
在J2SE 5.0软件中,你需要启动使用-Dcom.sun.management.jmxremote选项监控的应用程序。注意:在Java SE 6软件中,不再有这一要求。当启动该应用程序时,不需要特定的命令行选项。
在生产系统中的应用
JConsole启动一个在被观察的Java程序的JVM内部的JMX代理。运行另外一部分代码仅有一点极微弱的影响-但是影响很小。
另外,尽管JConsole在监视本地应用程序的开发和快速原型开发中很有用,但在实际的应用系统中不推荐使用。理由是,JConsole本身也消耗大 量的系统资源。我们推荐的方法是用远程监控来把JConsole应用程序与被监控的系统加以隔离。因此,对于应用系统来说,以远程模式使用 JConsole更好些。对于安全的远程监控来说,可以使用安全选项。
(二) jps
jps相当于Solaris进程工具ps。更多的信息,请参考《jps-Java Virtual Machine Process Status Tool》。
不象"pgrep java"或"ps -ef grep java",jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进程。
(三) jstat
jstat 显示一个测量(instrumented)Java HotSpot虚拟机的性能统计信息(请参考《jstat-Java Virtual Machine Statistics Monitoring Tool》)。有关于性能计数器的更详细的信息请参考《Code sample-jvmstat 3.0》。
(四) jstatd
jstatd是一个Java远程方法调用 (RMI)服务器应用程序-它监控测量Java HotSpot虚拟机的创建和终止并且提供一个接口来允许远程监控工具依附到运行于本地主机的JVM(请参考《jstatd-Virtual Machine jstat Daemon》)。
在应用系统中的使用
jps及其它jvmstat实用程序都使用 极为轻量级的观察机制。由JVM分配一小部分共享内存,而性能计数器也是从这部分内存中分配的。JVM子系统基于其感兴趣的事件更新性能计数器。客户端工 具仅仅负责异步地从共享内存段中进行读取。因此,总的来说,使用jvmstat进行监控的效果是很小的。 Photoshop教程 数据结构 五笔输入法专题
QQ病毒专题 共享上网专题 Google工具和服务专题 四、 Java SE 6平台中针对于Postmortem的可观察性工具
Java SE 6支持postmortem可观察性工具-它能够从挂起的Java进程或Java核心复制中获得信息。这些工具(除了jhat外)都使用Solaris libproc库来依附到和读取被观察的程序。在观察期间,目标程序被挂起。当Java进程被挂起或当从一个Java进程中发生一个核心复制时,可以使用 这些工具。在任何可能的情况下,请考虑使用gcore来捕获系统的核心复制的一个快照并且使用任何下列工具"离线"分析核心复制。
(一) jinfo
jinfo打印一个给定的Java进程或核心文件或一个远程调试服务器的Java配置信息。配置信息包括Java系统属性和JVM命令行标志(更多信息,请参考《jinfo-Configuration Info》)。
(二) jmap
jmap:如果这个工具不使用任何选项(除了pid或core选项)运行,那么它显示类似于Solaris的pmap工具所输出的信息。这个工具支持针对Java堆可观察性的若干其它选项。
在Java SE 6平台中,新加入了一个-dump选项。这样可以使jmap能够把Java堆信息复制到一个文件中,然后我们可以使用新的jhat命令(见下面一节)来分析它。
jmap -dump选项并不使用Solaris libproc来实现实时处理;而是,它运行当前正运行的JVM中的一小段代码,由此来实现堆复制。既然这种堆复制代码运行于JVM内部,那么其速度是比 较快的。堆复制的效果大致相当于实现一次"完全的GC"(对整个堆的垃圾收集),再加上把该堆的内容写入到文件中。实现堆复制的另外一种可能的思路是使用 gcore来进行核心复制并且运行"jmap -dump"(这与以"离线"方式运行的核心复制形成对照)。
(三) jstack
jstack等价于Solaris的pstack工具。jstack打印所有的Java线程的堆栈跟踪信息(可选地包括本机帧信息),请参考《jstack-堆栈跟踪》。关于锁和死锁的信息也可以被打印,请参考java.util.concurrent locks。
(四) jsadebugd
jsadebugd依附到一个Java进程或核心文件并且担当一个调试服务器的作用。远程客户,例如jstack、jmap和jinfo,都能够通过Java RMI依附到该服务器。
(五) jhat
jhat是一个Java堆复制浏览器。这个工具分析Java堆复制文件(例如,由上面的"jmap -dump"所产生的)。Jhat启动一个允许堆中的对象在web浏览器中进行分析的web服务器。这个工具并不是想用于应用系统中而是用于"离线"分 析。"jhat工具是平台独立的",其意思是,它可以被用来观察在任何平台上所产生的堆复制。例如,我们有可能在Linux系统上使用jhat来观察一个 在Solaris OS上所产生的堆复制。
把本机的java内存映像导出到heap.dmp中,其中PID为java进程的ID号。
jmap -dump:live,format=b,file=heap.dmp PID
导出后的映像文件可以用jhat来进行分析,-J是向java虚拟机传一个参数,如-mx768m是指定虚拟机可用最大的内存为768M。如果映像文件很大,你要指定一个很大的值,否则在分析过程中就会有OutOfMemeryError的错误。
jhat -J-mx768m -port <端口号:默认为7000> heap.dmp
分享到:
相关推荐
**JDK内置实用工具:监视和故障排除** Java Development Kit (JDK) 提供了一系列内置的工具,用于监视和诊断在Java平台上运行的应用程序。其中一个关键的工具是JConsole,这是一个基于Java Management Extensions ...
JDK(Java Development Kit)是一整套用于开发、测试和部署Java应用程序的工具集合,它包含了Java运行环境JRE(Java Runtime Environment),使得开发者能够在本地计算机上编写、编译和运行Java程序。 JDK1.8版本是...
在Java开发中,JDK内置的动态代理机制是一种强大的工具,它允许我们在运行时创建具有额外功能的对象。这个“JDK内置动态代理例子”旨在演示如何利用Java的反射API和`java.lang.reflect.Proxy`类来实现类似拦截器的...
**Java Development Kit (JDK) 1.8 内置 JRE** JDK(Java Development Kit)是Oracle公司提供的用于开发和运行Java应用程序的核心工具集。JDK 1.8,也被称为Java 8,是Java历史上的一个重要版本,发布于2014年3月18...
在Java开发环境中,有时我们需要一个轻量级的数据库来快速测试代码或进行原型设计,而JDK 1.7引入的内置数据库Apache Derby就是这样一种工具。这篇教程将带你入门使用Derby,通过两个示例程序——`TestDerbyBasic....
一旦设置完成,我们就可以创建新的 Java 项目,编写代码,使用内置的构建工具自动编译源代码,以及通过内置的调试器进行测试和调试。 Eclipse 还支持插件扩展,可以添加对其他语言(如 C++、Python 等)的支持,...
总结,JDK中的项目测试涵盖了多个方面,从单元测试到集成测试,再到性能和安全性测试,都是确保代码质量和项目稳定性的关键环节。熟练掌握这些测试技术和工具,能够提升开发效率,降低维护成本,同时也是软件工程...
- **性能监控**: 结合JDK 11的诊断工具(如JFR、JMX),对JMeter测试过程中的系统资源使用情况进行监控和分析。 综上所述,理解和掌握JDK 11的新特性及性能改进,以及如何利用Apache JMeter 5.3进行性能测试,对于...
Java Development Kit(简称JDK)是Oracle公司发布的用于开发和运行Java应用程序的工具包,它包含Java编译器、Java虚拟机(JVM)、Java类库以及一系列的开发工具。在本例中,我们讨论的是JDK的11.0.10版本,这是一个...
这些IDE内置了对JDK的支持,可以自动检测和配置JDK环境。如果你更喜欢轻量级的编辑器,如VS Code或Atom,也可以通过插件实现对Java的支持,并关联到已安装的JDK。 5. **模块系统(Project Jigsaw)** JDK 11中的...
总的来说,JDK 11.0.4是Java开发的重要版本,它带来了诸多改进和新功能,旨在提高开发效率和应用性能。无论是新手还是经验丰富的开发者,都应该熟悉并掌握这些特性,以便在实际开发中更好地利用Java 11的优势。
- **调试**:利用IDE的内置调试工具或者JDK自带的`jdb`命令行调试器。 **5. JDK在软件测试中的作用** - **单元测试**:使用JUnit或TestNG等框架编写和运行单元测试,确保代码功能正确。 - **集成测试**:Spring ...
对于调试,JDK内置的JDB或者集成到IDE中的调试工具(如Eclipse或IntelliJ IDEA)可以帮助开发者查找并修复问题。 总结,JDK 1.8 for Windows 64位是一个强大且功能丰富的开发工具,它的特性如Lambda表达式、Stream ...
另外,对于开发环境,IDE如IntelliJ IDEA和Eclipse也提供了内置的JDK版本选择功能,可以直接在IDE内部切换运行项目的JDK版本,避免了手动修改系统环境变量的步骤。 总结来说,管理和切换多个JDK版本是Java开发中的...
- **JShell(读-写-运行-退出工具,简称REPL)**:JDK 10内置了JShell,方便开发者进行快速的代码测试和实验。 - **Javadoc更新**:Javadoc工具现在支持Markdown语法,使得注释编写更直观。 ### 7. 源代码和二进制...
JDK是Java编程环境的核心组成部分,包含了编译器、解释器、调试器、性能分析工具等一系列用于Java开发的工具。对于任何Java开发者来说,安装并熟悉JDK是入门的第一步。 在JDK 8u201版本中,我们有以下几个关键知识...
`jdb`是JDK内置的Java调试器,通过它,开发者可以设置断点、查看变量值、单步执行代码等,以定位和解决程序中的错误。 5. **Javadoc(javadoc)** `javadoc`工具用于生成关于Java源代码的文档,它可以从注释中...
2. **HTTP客户端API(java.net.http)**:从JDK 11开始,Java提供了一个内置的高性能HTTP/2客户端,简化了网络通信,支持异步和同步请求。 3. **文本块(Text Blocks)**:这是一个新的语法特性,用于处理多行字符...
- **调试**:利用JDK提供的JDB调试工具或者IDE内置的调试功能,进行程序调试。 4. **JDK的其他工具** - **Javadoc**:生成Java源代码的API文档。 - **JAR**:打包和运行Java Archive文件,便于分发和部署应用...
在开发过程中,可以利用JDK提供的各种工具进行调试、性能分析和文档生成。 总之,JDK 11.0.11作为Java开发的重要工具,不仅提供了完整的运行环境,还引入了多项改进和新特性,为开发者带来了更为高效和便捷的编程...