javap

Java反编译工具,主要用于根据Java字节码文件反汇编为Java源代码文件
用法:javap

用法 描述
javap -help —help -? 输出此用法消息
javap -version 版本消息
javap -v -verbose 输出附加信息
javap -l 输出行号和本地变量表
javap -public 仅显示公共类和成员
javap -protected 显示受保护的/公共类和成员
javap -package 显示程序包/受保护的/公共类和成员 (默认)
javap -p -private 显示所有类和成员
javap -c 对代码进行反汇编
javap -s 输出内部类型签名
javap -sysinfo 显示正在处理的类的系统信息 (路径, 大小, 日期, MD5 散列)
javap -constants 显示最终常量
javap -classpath 指定查找用户类文件的位置
javap -cp 指定查找用户类文件的位置
javap -bootclasspath 覆盖引导类文件的位置

jps

jps(Java Virtual Machine Process Status Tool)显示当前所有Java进程pid的命令
用法:jps [options] [hostid]

用法 描述
jps -q 仅输出VM标识符
jps -m 输出main method参数
jps -l 输出完全的包名,应用主类名,jar完全路径名
jps -v 输出JVM参数
jps -V 输出通过flag文件传递到JVM的参数
jps -Joption 传递参数到JVM,如:-J-Xms512m

jstat

jstat监视Java虚拟机统计信息
用法:jstat - [-t] [-h] [ []]

用法 描述
jstat -gc pid 显示gc的信息,查看gc的次数及时间
jstat -gccapacity pid 内存GC分区中各对象的使用和占用大小
jstat -gcutil pid 统计gc信息汇总
jstat -gcnew pid 年轻代对象的信息
jstat -gcnewcapacity pid 年轻代对象的信息及其占用量
jstat -gcold pid 老年代对象的信息
jstat -gcoldcapacity pid 老年代对象的信息及其占用量
jstat -gcpermcapacity pid perm对象的信息及其占用量
jstat -class pid 显示加载class数量,及其所占空间
jstat -compiler pid 显示JVM实时编译的数量等信息
jstat -printcompilation pid 打印当前JVM执行的信息

关于命令中表头等信息的详细解释可以参考 jstat命令手册

jcmd

jcmd工具可以替代jps工具查看本地的JVM信息
用法: jcmd [pid | main-class] command…|PerfCounter.print|

用法 描述
jcmd 查看本地的Java进程列表,获取其pid
jcmd pid help 查看其支持的命令列表
jcmd pid Thread.print -l 打印线程栈
jcmd pid VM.command_line 打印启动命令及参数
jcmd pid VM.system_properties 查看系统属性内容
jcmd pid VM.uptime 查看虚拟机启动时间
jcmd pid GC.heap_dump data/filename.dump 查看JVM的Heap Dump
jcmd pid GC.class_histogram 查看类的统计信息
jcmd pid PerfCounter.print 查看性能统计

jinfo

jinfo可以查看运行中JVM的全部参数,还可以设置部分参数
用法:

  1. jinfo [option] pid
  2. jinfo [option] executable core
  3. jinfo [option] [server-id@]remote-hostname-or-ip
参数/option 描述说明
pid 对应JVM的进程id
excutable core 产生core dump文件
[server-id@]remote-hostname-or-ip 远程的ip或hostname,server-id标记服务的唯一性id
no option 输出全部的参数和系统属性
-flag name 输出对应名称的参数
-flag [+/-]name 开启/关闭对应名称的参数
-flag name=value 设定对应名称的参数
-flags 输出全部的参数
-sysprops 输出系统属性

jhat

jhat即Java Heap Analyse Tool,是分析Java堆的命令,可以将堆中的对象以html的形式显示出来,支持对象查询语言OQL
用法:jhat [-stack ] [-refs ] [-port ] [-baseline ] [-debug ] [-version] [-h/-help]

用法参数 描述说明
-J 启动JVM时传入启动参数,如:-J-XMx512m指定运行jhat的JVM使用的最大堆内存为512m
-stack false/true 关闭对象分配调用栈跟踪,默认为true
-refs false/true 关闭对象引用跟踪,默认为true
-port port-number 设定jhat服务的端口号,默认为7000
-exclude exclude-file 指定文件对象查询时需要排除的数据成员列表,如:指定文件列出了java.lang.String.value,那么当从某个特定对象计算可达对象列表时,引用路径涉及java.lang.String.value的都会被排除
-baseline file 指定一个基准堆转储在两个和heap dumps中有相同object id的对象会被标记为不是新的,其他对象被标记为新的,在比较两个不同的堆转储时很有用
-debug int 设置debug级别,0表示不输出调试信息,值越大表示输出的debug信息越详细
-version 启动后只显示版本信息就退出

jmap

jmap会打印Java进程内存中object的情况,或者将JVM中的堆以二进制输出成文本
用法:

  1. jmap [option] pid
  2. jmap [option] executable core
  3. jamp [option] [server-id@] remote-hostname-or-ip
用法参数 描述说明
  无参,会打印目标JVM加载的每个共享对象的起始地址,映射大小及映射文件的路径
-dump:[live,] format=b, file= 使用hprof二进制输出heap内容到文件,live代表只输出存活对象
-finalizerinfo 打印正等候回收的对象的信息
-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况
-histo[:live] 打印每个class的内存信息,JVM的内部类会加上前缀“*”,live代表只输出存活对象
-clstats 打印classloader和JVM heap方法区的信息,每个classloader的名字,活泼性,地址,父classloader和加载的class数量(另外内部String数量和占用内存数量也会打印出来)
-F 强迫,在pid没有响应的时候使用-dump或者-histo参数,在这个模式下,live参数无效
-h/-help 打印辅助信息
-J 传递参数给jmap启动的JVM

jstack

jstack是堆栈跟踪工具,用于打印给定的Java进程id或core file或远程调试服务的Java堆栈信息,如果在64位机器上,需要指定选项“-J-64”
用法:

  1. jstack [option] pid
  2. jstack [option] executable core
  3. jsatck [option] [server-id@] remote-hostname-or-ip
参数/option 描述说明
pid 对应JVM的进程id
excutable core 产生core dump文件
[server-id@]remote-hostname-or-ip 远程的ip或hostname,server-id标记服务的唯一性id
-F 强制打印栈信息
-l 长列表,打印关于锁的附加信息
-m 打印Java和native c/c++框架的所有栈信息
-h/-help 打印辅助信息

jconsole

jconsole是JDK内置的图形化Java性能分析工具,可以在命令行运行。启动可以更具Java进程id查看程序的堆使用,线程情况,类信息等。

jvisualvm

jvisualvm也是一个可以图形化Java性能分析的工具,在JDK6,JDK7,JDK8中存在,JDK9开始就被移除了,当然用户可以通过visualvm的官方网站自己下载。

JDK内置工具命令的更多相关文章

  1. 线上问题排查(2)——JDK内置工具

    https://www.cnblogs.com/keanuyaoo/p/3253663.html 常用命令目录: jps命令(Java Virtual Machine Process Status T ...

  2. JDK内置工具之一——JMap(java memory map)

    1.介绍 打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量). 可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.使用方法 j ...

  3. JDK内置工具使用(jps、jstack、jmap、jstat)

    一.JPS 1.jps -lvm:用于查看当前机器上已装载的jvm 二.jstackjstack命令主要用来查看Java线程的调用堆栈的,可以用来分析线程问题(如死锁) 1.jstack -l pid ...

  4. JDK内置工具jstack(Java Stack Trace)(转)

    1.介绍 jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的js ...

  5. JDK内置工具使用

  6. JDK内置性能监测工具使用

    Java自带的性能监测工具用法简介——jstack.jconsole.jinfo.jmap.jdb.jsta.jvisualvmJDK内置工具使用 一.javah命令(C Header and Stu ...

  7. JDK内置日志系统

    1.Java应用中的日志功能 ================= 一般的Java应用程序中都有记录日志的需求,目前主流的记录日志的方法是在应用程序中引入log4j,用log4j来生成日志.其实,JDK ...

  8. 利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比)

    利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比) 以下是红色内容是在命令行运行: C:\Users\Administrator>winsat diskWindow ...

  9. SuperSocket内置的命令行协议

    内置的命令行协议(接受自定义,分隔符为“:”,“,”): 命令行协议定义了每个请求必须以回车换行结尾 "\r\n". 由于 SuperSocket 中内置的命令行协议用空格来分割请 ...

随机推荐

  1. 【开发工具】IDEA简明使用指南

    目录 1. 搭建idea的开发环境 2. 调试技巧 3. 常用快捷键(小技巧) 4. 插件推荐 工欲善其事,必先利其器.在Java开发中挑选一款好的Ide环境能大大提升我们的开发效率,IntelliJ ...

  2. CentOS7升级OpenSSL版本

    1.CentOS7.6默认安装的openssl版本为 # 查看openssl版本 openssl version 2.下载最新的openssl wget https://www.openssl.org ...

  3. SpringMVC参数绑定,这篇就够了!

    SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行 ...

  4. Git - Git简介与客户端安装

    简介 Git是目前世界上最先进的分布式版本控制系统(没有之一)! 集中式版本控制系统(CVS/SVN),版本库是集中存放在中央服务器的,而一般工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最 ...

  5. Oracle数据库之第一篇

    1 : Oracle 简介 : 是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器IP,端口,用户名.密码,点击:连接 (CLIENT/SERVER) ...

  6. attempted to return null from a method with a primitive return type (int).

    java接口文件 package com.cyb.ms.mapper; import org.apache.ibatis.annotations.Param; public interface Acc ...

  7. Add an Item to the New Action 在新建按钮中增加一个条目

    In this lesson, you will learn how to add an item to the New Action (NewObjectViewController.NewObje ...

  8. iOS事件传递和事件响应者链 20170810

    一.事件响应者链 事件传递和事件响应链 区别 事件的传递和响应的区别: 事件的传递是从上到下(父控件到子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件到父控件. 引出 当我们手指触摸屏幕 ...

  9. [日常] 解决PHP Warning: Module 'mysqli' already loaded in Unknown on line 0

    解决PHP Warning: Module 'mysqli' already loaded in Unknown on line 0 原因:是PHP有两种方式添加扩展模块,一种是直接编译进了PHP,另 ...

  10. [Linux] nginx记录多种响应时间

    官网介绍$request_time – Full request time, starting when NGINX reads the first byte from the client and ...