`
richard_2010
  • 浏览: 64110 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

JDK自带工具的使用

 
阅读更多

        安装好jdk后,进入JAVA_HOME/bin目录,可以看到该目录下有一些可供我们使用的工具,这些工具在遇到问题的时候可以很好的帮助我们排查。


 

1.jconsole

        jconsole是一个可视化的工具,可以以图形化的方式向你展示java进程的各项数据,比如内存的占用和GC、线程数线程池、类的载入数量以及VM的摘要等,功能强大,如图:


 

        jconsole可以连接远程主机,前提是目标主机进行了相关设置,比如启动参数

            -Dcom.sun.management.jmxremote

            -Dcom.sun.management.jmxremote.port=1099

            -Dcom.sun.management.jmxremote.ssl=false

            -Dcom.sun.management.jmxremote.authenticate=false

表示允许匿名通过1099端口连接该进程获取相关的数据。

 

2.jvisualvm

        jvisualvm可以看作一个加强版的jconsole,除了jconsole提供的一些信息的查看,还可以对cpu内存进行取样分析,也可以dump出堆数据进行分析,另外支持一些其他的插件。


 

 

3.jps(JVM Process Status)

        jps可以查看当前用户java进程的pid(如果想显示其他用户的java进程得用系统的ps命令),基本后面所有的命令都会用到pid。

            $ jps

            17113 Bootstrap

            30207 Bootstrap

            28573 Jps

            27095 jar

        在不加任何参数的情况下显示的是Main方法的文件名,参数 -l 显示具体的包名

            $ jps -l

            17113 org.apache.catalina.startup.Bootstrap

            30362 sun.tools.jps.Jps

            30207 org.apache.catalina.startup.Bootstrap

            27095 slave.jar

        此时如果同时启动两个tomcat(如上)可能还是没办法区分是哪个应用,参数 -v 显示jvm启动时带的参数,参数 -m 显示main方法的启动参数。

 

4.jinfo(JVM Configuration Info)

        jinfo可以查看和设置JVM的参数,这个功能在动态修改JVM的参数场景下比较有用,不用重启应用服务器即可生效,当然如果设置参数值时报错:java.io.IOException: Command failed in target VM,说明该参数不支持修改。

查看比较简单,用法是jinfo -**  pid 

 

5.jmap(JVM Memory Map)

        jmap用来打印java进程内存里面对象的使用情况,jmap -heap pid显示jvm堆的使用摘要,jmap -histo pid打印class的实例数目、内存占用、包含包路径的类名等信息(-histo:live时只统计活的对象

该命令用得最多的是-dump参数,jmap -dump:format=b,file=filepath pid,使用hprof二进制形式dump jvm的堆内容到指定的文件,可用于后续的内存分析排查内存泄露等信息,-dump:live时只导出活的对象。

 

6.jstack(JVM Stack Trace)

        jstack可以打印java进程的堆栈信息,jstack -l pid打印锁的一些附加信息,在排查死锁的时候比较有用。

 

7.jstat(JVM Statistics Monitoring Tool)

        jstat用来对JVM堆的使用情况进行实时的统计,可以监控如下信息:

        类的加载及卸载情况;

        新生代、老生代及持久代的容量、使用情况和垃圾收集情况,并包含垃圾回收的次数及垃圾回收所耗费的时间;

        新生代中s0及s1容量和分配情况。

        jstat -options可以查看它支持的参数,用得比较多的有

            $ jstat -gcutil 29784

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   

  0.00  99.46  76.34  49.36  31.06  30139  846.957   145  447.050 1294.007

         输出分别代表s0使用百分比,s1使用百分比,新生代使用百分比,旧生代使用百分比,永久代使用百分比,自jvm启动后young gc的次数,耗费的时间,full gc的次数,耗费的时间,gc总的耗费时间(单位秒)。

还有-gc和-gccapacity也是较常用的参数。

 

8.jhat(JVM Heap Analyse Tool) 

        jhat用来分析dump出来堆里面的数据,可以将解析的数据以html的方式呈现。如果dump出来的堆很大可以加参数jhat -J-Xmx1024m jmapDumpFile解决堆内存不足的报错。

        当然现在一般可以把dump文件下载到本地,用MAT(Memory Analyzer Tool)这种图形化工具来分析,速度比较快,而且图形化的结果可读性会更强。

  • 大小: 17.3 KB
  • 大小: 72.6 KB
  • 大小: 64.1 KB
分享到:
评论

相关推荐

    使用jdk自带的jar工具打jar包

    本篇将详细介绍如何使用JDK自带的`jar`工具来创建JAR包,这是一项基础但至关重要的技能。 一、`jar`工具简介 `jar`是Java Development Kit (JDK) 自带的一个命令行工具,用于创建、更新和提取JAR文件。它支持...

    利用jdk自带算法实现的AES加解密

    本文将详细介绍如何利用JDK自带的算法实现AES加解密,并结合Base64编解码进行数据处理。 首先,AES是一种分组密码,它以128位为一个数据块进行加密,支持128、192和256位的密钥长度。在JDK中,AES加解密的核心类...

    JDK自带线程池分析

    JDK自带线程池分析 JDK 自带线程池是 Java 语言中用于管理和执行线程的工具,旨在提高多线程编程的效率和灵活性。本文将详细介绍 JDK 自带线程池的组成、创建方法、优点和常见应用场景。 多线程技术 多线程技术是...

    jdk自带工具说明

    ### JDK自帶工具詳細解析 ...以上介紹了部分核心JDK工具的功能和使用場景。這些工具在Java開發過程中扮演著重要角色,無論是編寫代碼還是部署應用程序,甚至是後續的故障排查和性能優化,都是不可或缺的一部分。

    JDK自带的jarsigner签名工具帮助文档

    **JDK自带的jarsigner签名工具** 在Android应用开发中,为了确保应用程序的安全性和完整性,开发者需要对APK文件进行签名。JDK提供了一个名为`jarsigner`的工具,用于对Java类库和Android APK文件进行数字签名。本...

    JDK自带调试工具doc

    本篇将详细介绍JDK自带的几个主要调试工具,包括`jmap`、`jstack`、`jconsole`,以及相关的文档资源。 1. `jmap`:这是一个用于诊断堆内存状况的工具。通过`jmap`,我们可以获取到堆内存的详细映射,包括对象分配...

    jdk自带工具

    **标题:“JDK自带工具”** ...总的来说,掌握JDK自带工具的使用不仅能提升开发效率,也有助于优化程序性能,解决复杂的问题。通过深入研究JVM行为和源码解析,开发者能更好地驾驭Java这一强大而灵活的编程语言。

    jdk自带调试工具说明文档

    CPU占用过高问题排查,java应用某台机器cpu比较高的情况,而且重启后基本上都会恢复正常。

    JDK自带VM分析工具

    ### JDK 自带 VM 分析工具详解 在 Java 开发领域,深入理解并有效利用 Java 开发工具包(JDK)自带的各种虚拟机(VM)分析工具对于提高应用程序性能至关重要。本文将详细介绍 JDK 自带的几个核心 VM 分析工具:jps...

    JDK自带工具之jinfo.docx

    **JDK自带工具之jinfo详解** `jinfo`是Java Development Kit (JDK) 提供的一款实用工具,主要用于查看和调整Java虚拟机(JVM)的配置信息。它可以帮助开发者深入了解正在运行的Java应用程序的内存设置、垃圾收集器...

    JDK自带的日志包简单应用

    本篇将深入探讨如何利用JDK自带的日志包进行简单的日志应用。 首先,`java.util.logging.Logger`是日志系统的核心类,用于创建和管理日志消息。每个类都可以拥有自己的`Logger`实例,通过`Logger.getLogger()`方法...

    Jconsole JDK自带的监控程序

    ### JConsole:JDK 自带的监控工具 #### 一、简介 JConsole是一款由Sun Microsystems(现已被Oracle收购)开发并集成于JDK 1.5及以上版本中的图形化监控工具。它能够帮助开发者及运维人员监测和诊断运行中的Java...

    java jdk帮助工具

    13. **jvisualvm综合监测工具**:集成了许多JDK自带的监测工具,提供更友好的图形界面,可以进行性能分析、内存检测、线程检查等。 这些工具是Java开发者的日常利器,通过深入理解和熟练运用,能够提高开发效率,...

    Java Diary - JDK自带的java数据库

    Java Diary - JDK自带的Java数据库,这里主要讨论的是Apache Derby,一个完全的关系型数据库系统,它也是Java开发环境中的一部分。Derby,原名Cloudscape,由IBM开发并贡献给了Apache软件基金会,现在作为Apache的一...

    简单建立数据连接池及JDK自带日志使用

    而JDK自带的日志系统则为开发者提供了一种记录和跟踪程序运行情况的工具。掌握这两项技术,对于提升Java应用的稳定性和性能至关重要。在实际项目中,还需要结合具体需求,灵活调整和优化连接池配置以及日志记录策略...

    JDK一些查询工具

    JVisualVM是JDK自带的一个集成化性能分析工具,它集合了多种性能监控和诊断功能,如内存分析、线程分析、CPU使用率监测等。此外,它还支持远程连接,可以对不在本地运行的Java应用进行监控。 **8. jQueryAPI-100214...

    Java开发工具jdk安装包

    此外,`jdb`是JDK自带的调试工具,通过它,开发者可以对程序进行单步调试、设置断点、查看变量值等操作,这对于学习和修复代码错误非常有帮助。 对于Java开发,IDE(集成开发环境)如Eclipse、IntelliJ IDEA等虽然...

    远程连接工具,支持SFTP,FTP 需要自带jdk环境

    远程连接工具,支持SFTP,FTP 需要自带jdk环境 该平台类似于网页版的Xshell,基于cookie和json的方式存储登录信息无数据库更方便兼容每个用户的使用,支持SFTP和FTP两种登录方式,打破原有黑端显示命令行和文件名的...

    Jmeter压测工具(中文版)+java1.8.0_Jdk

    Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI ...

    jdk自带定时器使用方法详解

    JDK 自带的定时器(`java.util.Timer` 类)是一种强大的工具,允许开发者安排任务在后台线程中按特定时间或周期性地执行。它为应用程序提供了灵活的调度功能,比如延迟执行、周期性执行等。下面我们将深入探讨 `...

Global site tag (gtag.js) - Google Analytics