`
月迷津渡
  • 浏览: 100671 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jdk内置性能测试工具的介绍

    博客分类:
  • tool
 
阅读更多

(一) 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

分享到:
评论

相关推荐

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

    除了这些工具之外,JDK 还提供了注释处理工具,用于 JAR 文件冲突检测的 extcheck,Java 编译器的 idlj IDL,使用源代码注释的 javadoc 文档生成器或 Javadoc 文档生成器。 jar`归档程序,将单个 JAR 文件中的相关类...

    ApkIDE——安卓反编译

    10、内置adb功能,包括使用adb向设备(或模拟器)安装、卸载修改后的apk进行测试,并嵌入adb log、ddms等功能监测修改apk的运行状况,以便于分析和查找错误。 11、支持多国语言界面,支持界面换肤。 注意事项: 1、...

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

    除了这些工具之外,JDK 还提供了注释处理工具,用于 JAR 文件冲突检测的 extcheck,Java 编译器的 idlj IDL,使用源代码注释的 javadoc 文档生成器或 Javadoc 文档生成器。 jar`归档程序,将单个 JAR 文件中的相关类...

    JDK_1_6 API

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了...

    java jdk-api-1.6 中文 chmd

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供...

    dbvis_windows-x64_9_1_5

    DbVisualizer是一个完全基于JDBC的跨平台数据库管理工具,内置SQL语句编辑器(支持语法高亮),凡是具有JDBC数据库接口的数据库都可以管理,已经在Oracle, Sybase, DB2, MySQL, InstantDB, Cloudcape, HyperSonic ,...

    [Java参考文档].JDK_API 1.6

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了...

    SPTools爪哇工具箱-其他

    内置功能: 组织机构:机构管理、用户管理、角色管理、行政区域。 系统监控:系统日志、在线用户,后期会慢慢追加完善。 应用管理:任务调度、邮件管理、图片管理、文章管理、人工智能,每个模块只需要你稍作修改就...

    SPTools爪哇工具箱 v1.0

    基础环境:JDK1.8、Maven、Mysql、Redis、IntelliJ IDEA、minio、fastdfsSPTools爪哇工具箱内置功能组织机构:机构管理、用户管理、角色管理、行政区域。 系统监控:系统日志、在线用户,后期会慢慢追加完善。 ...

    OA办公系统 Springboot vue.js前后分离,Flowable工作流自定义表单

    操作系统:windows linux mac 等搭建正确的java 数据库 运行环境才行(要求买家自己能独立搭建)开发工具:咱这边用的 eclipsejee 4.9.0(免安装)(myeclipse 2014及以下不支持,以上未测试)重要提醒:所有的版本功能一样,...

    汪文君高并发编程实战视频资源全集

     高并发编程第三阶段12讲 sun.misc.Unsafe介绍以及几种Counter方案性能对比.mp4  高并发编程第三阶段13讲 一个JNI程序的编写,通过Java去调用C,C++程序.mp4  高并发编程第三阶段14讲 Unsafe中的方法使用,一半是...

    汪文君高并发编程实战视频资源下载.txt

     高并发编程第三阶段12讲 sun.misc.Unsafe介绍以及几种Counter方案性能对比.mp4  高并发编程第三阶段13讲 一个JNI程序的编写,通过Java去调用C,C++程序.mp4  高并发编程第三阶段14讲 Unsafe中的方法使用,一半是...

    二开ChatGPT微信小程序源码 AI聊天微信小程序源码 适配H5和WEB端 支持AI聊天次数限制.rar

    ChatGPT-MP(基于ChatGPT实现的微信小程序,适配H5和WEB端) 可二开包含前后台,支持打字效果输出流式输出,支持AI聊天次数...提示词功能(角色扮演),内置近300种提示词,包含小红书文案书写、周报生成、异性对话生成器等

    Java典型模块

    3.4.2 JDK的内置标注 3.5 泛型 3.5.1 为什么要使用泛型 3.5.2 泛型的一些特性 3.5.3 泛型的通配符 3.6 类加载器 3.6.1 什么是类加载器 3.6.2 什么是类加载器的委派模型 3.6.3 编写一个自己的加载器 3.7 动态代理 ...

    java基础案例与开发详解案例源码全

    16.2 JDK内置的基本注解类型430 16.2.1 重写Override430 16.2.2 警告Deprecated431 16.2.3 抑制警告SuppressWarnings433 16.3 自定义注解类型433 16.4 对注解进行注解435 16.4.1 目标Target435 16.4.2 类型Retention...

    毕设新项目-基于pringboot实现的旅游网站源码+sql数据库+项目部署说明.zip

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合...

    Joffice2.1操作手册

    系统采用多层的系统架构进行功能开发,有利于代码功能责任分开,同时有利于不同开发人员的分工及合作,也有利于代码的单元测试。 数据访问层Dao: 负责与数据库交互 业务处理层Service: 负责系统的所有业务逻辑...

    java外卖系统源码-test-java-14-records:使用gson测试Java记录

    不是代码生成工具的完全替代品,但将这种支持内置到语言中是非常好的。 带有记录和 Gson 的示例应用程序 下载并设置 Java 15 我想测试和玩弄记录和 json 序列化,所以我 下载, 提取另一个 jdk:s 旁边的 tar.gz 并...

Global site tag (gtag.js) - Google Analytics