JDK自身携带了大量的工具,以jdk1.6.0_38为例,已经自带了47个工具,包括大量的调试分析工具,有些是命令行有些是图形界面工具,这篇文章记录下其中一些工具的使用说明,以后有新的使用体会了再完善补充这篇文章
1 jstack
jstack用于打印java进程的堆栈信息或者从jvm进程崩溃后生成的dump文件生成堆栈信息
命令使用格式
jstack [option] pid
jstack [option] core_file
jstack [option] [server_id@]<remote server ip or hostname>
其中[option] 可选参数有
-l -m -F 详细说明通过jstack -h来查看
英文原文说明如下:
-F to force a thread dump. Use when jstack <pid> does not respond (process is hung)
-m to print both java and native frames (mixed mode)
-l long listing. Prints additional information about locks
-h or -help to print this help message
2 jps
和unix/linux里的ps类似,jps只打印jvm上运行的进程信息 输出运行进程的启动文件名和进程ID(pid)
jps命令参数说明
-q 不输出类名、Jar名和传入main方法的参数
-m 输出传入main方法的参数
-l 输出main类或Jar的全限名
-v 输出传入JVM的参数
3 jmap
jmap用于打印java进程堆栈信息和java堆内存转存到文件
(一) java -histo pid 打印java堆内类的实例数、字节数和类目,截图是本地的eclipse进程输出信息
(二) java -histo:live pid和上面的类似,只是打印"存活"的对象
(三) jmap -dump:file=file_path pid 将java 堆内存以hprof 二进制格式转存到文件。
关于hprof二进制格式的说明可以参考这里 https://java.net/downloads/heap-snapshot/hprof-binary-format.html
(四) jmap -heap pid 打印java 堆内存概述信息
下图是在某测试机器上执行情况
参数的解释
NewRatio:年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)
SurvivorRatio:Eden区与Survivor区的大小比值
4 jconsole和jvisualvm
这两个是图像化工具所见即所得,不仅支持本地而且还支持远程监视,不过远程连接之前要先做配置
5 jstat
查看jvm运行状态工具,包括JVM内各种内存空间(Eden Survivor 1/2 Old)使用情况和各种GC(YongGC Full GC)发生次数
jstat -options 查看可选参数
输出如下
这些选项分别表示
统计本地eclipse GC信息
其中从做到右的S0 S1 GCT分别代表如下
S0 — Heap上的 Survivor space 0 区已使用空间的百分比
S1 — Heap上的 Survivor space 1 区已使用空间的百分比
E — Heap上的 Eden space 区已使用空间的百分比
O — Heap上的 Old space 区已使用空间的百分比
P — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
其它工具以后使用到了 有空再继续写
相关推荐
本篇将详细介绍如何使用JDK自带的`jar`工具来创建JAR包,这是一项基础但至关重要的技能。 一、`jar`工具简介 `jar`是Java Development Kit (JDK) 自带的一个命令行工具,用于创建、更新和提取JAR文件。它支持...
本文将详细介绍如何利用JDK自带的算法实现AES加解密,并结合Base64编解码进行数据处理。 首先,AES是一种分组密码,它以128位为一个数据块进行加密,支持128、192和256位的密钥长度。在JDK中,AES加解密的核心类...
JDK自带线程池分析 JDK 自带线程池是 Java 语言中用于管理和执行线程的工具,旨在提高多线程编程的效率和灵活性。本文将详细介绍 JDK 自带线程池的组成、创建方法、优点和常见应用场景。 多线程技术 多线程技术是...
### JDK自帶工具詳細解析 ...以上介紹了部分核心JDK工具的功能和使用場景。這些工具在Java開發過程中扮演著重要角色,無論是編寫代碼還是部署應用程序,甚至是後續的故障排查和性能優化,都是不可或缺的一部分。
**JDK自带的jarsigner签名工具** 在Android应用开发中,为了确保应用程序的安全性和完整性,开发者需要对APK文件进行签名。JDK提供了一个名为`jarsigner`的工具,用于对Java类库和Android APK文件进行数字签名。本...
本篇将详细介绍JDK自带的几个主要调试工具,包括`jmap`、`jstack`、`jconsole`,以及相关的文档资源。 1. `jmap`:这是一个用于诊断堆内存状况的工具。通过`jmap`,我们可以获取到堆内存的详细映射,包括对象分配...
**标题:“JDK自带工具”** ...总的来说,掌握JDK自带工具的使用不仅能提升开发效率,也有助于优化程序性能,解决复杂的问题。通过深入研究JVM行为和源码解析,开发者能更好地驾驭Java这一强大而灵活的编程语言。
CPU占用过高问题排查,java应用某台机器cpu比较高的情况,而且重启后基本上都会恢复正常。
### JDK 自带 VM 分析工具详解 在 Java 开发领域,深入理解并有效利用 Java 开发工具包(JDK)自带的各种虚拟机(VM)分析工具对于提高应用程序性能至关重要。本文将详细介绍 JDK 自带的几个核心 VM 分析工具:jps...
**JDK自带工具之jinfo详解** `jinfo`是Java Development Kit (JDK) 提供的一款实用工具,主要用于查看和调整Java虚拟机(JVM)的配置信息。它可以帮助开发者深入了解正在运行的Java应用程序的内存设置、垃圾收集器...
本篇将深入探讨如何利用JDK自带的日志包进行简单的日志应用。 首先,`java.util.logging.Logger`是日志系统的核心类,用于创建和管理日志消息。每个类都可以拥有自己的`Logger`实例,通过`Logger.getLogger()`方法...
### JConsole:JDK 自带的监控工具 #### 一、简介 JConsole是一款由Sun Microsystems(现已被Oracle收购)开发并集成于JDK 1.5及以上版本中的图形化监控工具。它能够帮助开发者及运维人员监测和诊断运行中的Java...
13. **jvisualvm综合监测工具**:集成了许多JDK自带的监测工具,提供更友好的图形界面,可以进行性能分析、内存检测、线程检查等。 这些工具是Java开发者的日常利器,通过深入理解和熟练运用,能够提高开发效率,...
Java Diary - JDK自带的Java数据库,这里主要讨论的是Apache Derby,一个完全的关系型数据库系统,它也是Java开发环境中的一部分。Derby,原名Cloudscape,由IBM开发并贡献给了Apache软件基金会,现在作为Apache的一...
而JDK自带的日志系统则为开发者提供了一种记录和跟踪程序运行情况的工具。掌握这两项技术,对于提升Java应用的稳定性和性能至关重要。在实际项目中,还需要结合具体需求,灵活调整和优化连接池配置以及日志记录策略...
JVisualVM是JDK自带的一个集成化性能分析工具,它集合了多种性能监控和诊断功能,如内存分析、线程分析、CPU使用率监测等。此外,它还支持远程连接,可以对不在本地运行的Java应用进行监控。 **8. jQueryAPI-100214...
此外,`jdb`是JDK自带的调试工具,通过它,开发者可以对程序进行单步调试、设置断点、查看变量值等操作,这对于学习和修复代码错误非常有帮助。 对于Java开发,IDE(集成开发环境)如Eclipse、IntelliJ IDEA等虽然...
远程连接工具,支持SFTP,FTP 需要自带jdk环境 该平台类似于网页版的Xshell,基于cookie和json的方式存储登录信息无数据库更方便兼容每个用户的使用,支持SFTP和FTP两种登录方式,打破原有黑端显示命令行和文件名的...
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI ...
JDK 自带的定时器(`java.util.Timer` 类)是一种强大的工具,允许开发者安排任务在后台线程中按特定时间或周期性地执行。它为应用程序提供了灵活的调度功能,比如延迟执行、周期性执行等。下面我们将深入探讨 `...