java-jdk中的工具使用介绍

前言

jdk中包含了很多的工具程序,除了常用的java用来运行java程序之外,还有其他的使用工具来收集java程序的信息。下面一起来看看吧。

更多信息请参考官方文档

启动虚拟机

java

java是启动虚拟机的参数,它的参数值得研究和实践。

java命令用来启动java应用程序。它通过启动Java运行时环境(JRE)、加载指定的类并调用该类的main()方法来实现这一点。该方法必须声明为公有和静态的,它不能返回任何值,并且必须接受String数组作为参数。方法声明的形式如下:

public static void main(String[] args)

java命令可以用来启动一个JavaFX应用程序通过加载一个类,它有一个main()方法或扩展javafx.application.Application。在后一种情况下,发射器构造应用程序类的一个实例,调用它的init()方法,然后调用start(javafx.stage.Stage)方法。

默认情况下,不是java命令选项的第一个参数是要调用的类的完全限定名。如果指定了-jar选项,则其参数是包含应用程序的类和资源文件的JAR文件的名称。启动类必须在其源代码的Main-Class清单头中指明。

JRE在三组位置搜索启动类(以及应用程序使用的其他类):引导类路径、安装的扩展和用户的类路径。

类文件名或JAR文件名后面的参数被传递给main()方法。

javaw命令与java相同,除了javaw没有相关的控制台窗口。当您不希望出现命令提示符窗口时,请使用javaw。然而,如果启动失败,javaw启动器将显示一个带有错误信息的对话框。

选项

java命令支持广泛的选项,可分为以下类别:

  • 标准选项
  • 非标准的选项
  • 高级运行时选项
  • 高级JIT编译器选项
  • 高级可服务性选项
  • 高级垃圾回收选项

标准选项保证得到Java虚拟机(JVM)的所有实现的支持。它们用于常见的操作,例如检查JRE版本、设置类路径、启用详细输出等等。

非标准选项是特定于Java HotSpot Virtual Machine的通用选项,因此它们不能保证得到所有JVM实现的支持,并且可能会发生变化。这些选项以-X开头。

高级选项不建议随意使用。这些是用于调优Java HotSpot Virtual Machine操作的特定领域的开发人员选项,这些操作通常有特定的系统需求,可能需要对系统配置参数的特权访问。它们也不能保证得到所有JVM实现的支持,并且可能会发生变化。高级选项以-XX开头。

为了跟踪在最新版本中已弃用或删除的选项,在文档的末尾有一个名为deprecated和removed options的部分。

布尔选项用于启用默认禁用的特性或禁用默认启用的特性。这些选项不需要参数。Boolean -XX选项使用加号(-XX:+OptionName)启用,使用减号(-XX:-OptionName)禁用。

对于需要参数的选项,参数可以用空格、冒号(:)或等号(=)与选项名分开,或者参数可以直接跟在选项后面(每个选项的语法不同)。如果希望以字节为单位指定大小,则可以不使用后缀,或者使用后缀k或K表示千字节(KB), m或M表示兆字节(MB), g或G表示千兆字节(GB)。例如,要将大小设置为8gb,可以指定8g、8192m、8388608k或8589934592作为参数。如果希望指定百分比,请使用0到1之间的数字(例如,为25%指定0.25)。

以下是笔者用过的选项

标准选项

-verbose:class

显示关于每个装入类的信息。

-verbose:gc

显示关于每个垃圾收集(GC)事件的信息。

-verbose:jni

显示关于本机方法和其他Java本机接口(JNI)活动的使用信息。

高级可服务性选项

-XX:+PrintGC

支持在每个GC上打印消息。默认情况下,该选项是禁用的。

-XX:+PrintGCDetails

允许在每个GC上打印详细的消息。默认情况下,该选项是禁用的。

-XX:+PrintGCTimeStamps

允许在每个GC上打印时间戳。默认情况下,该选项是禁用的。

-XX:+PrintGCApplicationConcurrentTime

启用打印自上次暂停(例如GC暂停)以来经过了多少时间。默认情况下,该选项是禁用的。

-XX:+PrintGCApplicationStoppedTime

支持打印暂停(例如GC暂停)持续了多长时间。默认情况下,该选项是禁用的。

监视虚拟机

jps

列出目标系统上插装的Java虚拟机(jvm)。

//查看jvm虚拟机的进程信息
jps -l

jstat

监视Java虚拟机(JVM)统计信息。

jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]

故障诊断工具

jinfo 配置信息

连接一个正在运行的java进程pid,打印给定Java进程、核心文件或远程调试服务器的Java配置信息。

jinfo [ option ] pid

jmap 内存映射

打印给定进程、核心文件或远程调试服务器的共享对象内存映射或堆内存细节。

jmap [ option ] pid
//查看堆信息
jmap -heap pid
//转储堆文件
jmap -dump:[live,]format=b,file=<filename> pid
//等待回收的对象数量
jmap -finalizerinfo pid
//打印堆的直方图
jmap -histo[:live] pid

jhat Java堆分析工具

解析java堆转储文件并启动web服务器。

jhat [ options ] <heap-dump-file>

jstack

打印Java进程、核心文件或远程调试服务器的Java线程堆栈跟踪。

jstack [ options ] pid
jstack -l pid

监视java程序

jvisualvm

可视化地监视、故障排除和配置Java应用程序。

jvisualvm <options>

idea有个插件VisualVM Launcher可以方便启动jvisualvm

jconsole

启动一个图形控制台,允许您监视和管理Java应用程序。

jconsole [ options ] [ connection ... ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值