【深入理解JAVA虚拟机】第二部分.内存自动管理机制.4.JVM工具
1、概述
工具作用:性能监控与故障处理
工作原理:分析数据
数据包含:运行日志、 异常堆栈、 GC日志、 线程快照(threaddump/javacore文件)、 堆转储快照(heapdump/hprof文件)等。
2、JDK命令行工具
JDK命令行是jdk/lib/tools.jar 的封装,所以都很小。
其他的工具,都是JDK命令行的封装。
jps:虚拟机进程状况工具(JVM Process StatusTool)
jps 也就是 JVM里的 ps。
jstat:虚拟机统计信息监视工具 (JVM Statistics Monitoring Tool)
是用于监视虚拟机各种运行状态信息的命令行工具。
它可以显示本地或者远程[1]虚拟机进程中的类装载、 内存、 垃圾收集、 JIT编译等运行数据 。
jinfo:Java配置信息工具 (Configuration Info for Java)
jinfo的作用是实时地查看和调整虚拟机各项参数。
jmap:Java内存映像工具 (Memory Map for Java)
jmap命令用于生成堆转储快照(一般称为heapdump或dump文件)。
jhat:虚拟机堆转储快照分析工具 (JVM Heap Analysis Tool)
jstack:Java堆栈跟踪工具 (Stack Trace for Java)
用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。
HSDIS:JIT生成代码反汇编

3、JDK可视化工具
JConsole:Java监视与管理控制台
旧了
VisualVM:多合一故障处理工具 (All-in-One Java Troubleshooting Tool)
优点:
1、基于JVM,不需要Agent
2、支持插件 -- 可扩展
已有常用功能:
显示虚拟机进程以及进程的配置、 环境信息(jps、 jinfo)。
监视应用程序的CPU、 GC、 堆、 方法区以及线程的信息(jstat、 jstack)。
dump以及分析堆转储快照(jmap、 jhat)。
方法级的程序运行性能分析,找出被调用最多、 运行时间最长的方法。
离线程序快照:收集程序的运行时配置、 线程dump、 内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈。
一定支持热补丁的插件
BTrace动态日志跟踪:
在不停止目标程序运行的前提下,通过HotSpot虚拟机的HotSwap技术动态加入原本并不存在的调试代码。
这项功能对实际生产中的程序很有意义:经常遇到程序出现问题,但排查错误的一些必要信息,譬如方法参数、 返回值等,在开发时并没有打印到日志之中,以至于不得不停掉服务,通过调试增量来加入日志代码以解决问题。
BTrace的用法还有许多,打印调用堆栈、 参数、 返回值只是最基本的应用,在它的网站上有使用BTrace进行性能监视、 定位连接泄漏和内存泄漏、 解决多线程竞争问题等例子
4、其他工具
除了JDK自带的工具之外,常用的故障处理工具还有很多,如果读者使用的是非Sun系列的JDK、 非HotSpot的虚拟机,就需要使用对应的工具进行分析,如:
IBM的Support Assistant[1]、 Heap Analyzer [2]、 Javacore Analyzer [3]、 Garbage CollectorAnalyzer[4]适用于IBM J9 VM。
HP的HPjmeter[5]、 HPjtune适用于HP-UX、 SAP、 HotSpot VM。Eclipse的Memory Analyzer Tool [6](MAT)适用于HP-UX、 SAP、 HotSpot VM,安装IBM DTFJ插件后可支持IBM J9 VM。
BEA的JRockit Mission Control[7]适用于JRockit VM。
【深入理解JAVA虚拟机】第二部分.内存自动管理机制.4.JVM工具的更多相关文章
- 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.3.垃圾收集器与内存分配策略
1.学习目的 当需要排查各种内存溢出. 内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节. Java内存运行时区域的各个部分,其中程序计数 ...
- 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.5.调优实战
高性能硬件上的程序部署策略 在高性能硬件上部署程序,目前主要有两种方式: 通过64位JDK来使用大内存. -- 缺点:GC停顿时间长 使用若干个32位虚拟机建立逻辑集群来利用硬件资源. -- 思 ...
- 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.2.HotSpot虚拟机对象探秘
对象的创建过程 1.加载类 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载. 解析和初始化过. 如果没有,那必须 ...
- 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.1.内存区域
1.内存区域 根据<Java虚拟机规范(Java SE 7版)> 的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示. 程序计数器 当前线程所执行的字节码的行号指 ...
- 《深入理解 java 虚拟机》学习 -- 内存分配
<深入理解 java 虚拟机>学习 -- 内存分配 1. Minor GC 和 Full GC 区别 概念: 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java ...
- 深入理解java虚拟机-第二章:java内存区域与内存泄露异常
2.1概述: java将内存的管理(主要是回收工作),交由jvm管理,确实很省事,但是一点jvm因内存出现问题,排查起来将会很困难,为了能够成为独当一面的大牛呢,自然要了解vm是怎么去使用内存的. 2 ...
- 深入理解java虚拟机-第二章
第2章 Java内存区域与内存溢出异常 运行数据区域 1.程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 2.J ...
- (转)《深入理解java虚拟机》学习笔记6——类加载机制
Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程. 在加载阶段,java虚拟机需要完成以下 ...
- 深入理解JAVA虚拟机原理之内存分配策略(二)
更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 1.对象优先在Eden分配 大多情况,对象在新生代Eden区分配.当Eden区没 ...
随机推荐
- VMware Workstation pro14 虚拟机下安装CentOS6.5图文教程
1 启动VMware的画面 2.点击 创建新的虚拟机 3 选择 典型(推荐) 4 选择 稍后安装操作系统 5 选择客户机操作系统类型 6 设置虚拟机名称 和 安装路径 7 指定磁盘容量 8 点击 自定 ...
- goLang冒泡
// test project main.gopackage main import ( "fmt") func main() { var a = [10]int{1, ...
- 九度oj 1437 To Fill or Not to Fill 2012年浙江大学计算机及软件工程研究生机试真题
题目1437:To Fill or Not to Fill 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1488 解决:345 题目描述: With highways availabl ...
- VMware workstation 非正常关机导致开机失败,解决方法
问题:VMware workstation 非正常关机导致开机失败!如下图:
- MVC 下拉框联动效果(单选)
下拉框联动效果,我们以部门--职位为例,选择部门时,关联到该部门的职位.下拉框的写法就不多说了,详细请参照前文. 视图: 其中,dept是部门的属性,deptlist是部门下拉框的属性,job是职位的 ...
- Hadoop实战之一~Hadoop概述
对技术,我还是抱有敬畏之心的. Hadoop概述 Hadoop是一个开源分布式云计算平台,基于Map/Reduce模型的,处理海量数据的离线分析工具.基于Java开发,建立在HDFS上,最早由Goog ...
- Node.js学习笔记(四) --- fs模块的使用
目录 . fs.stat 检测是文件还是目录 . fs.mkdir 创建目录 . fs.writeFile 创建写入文件 . fs.appendFile 追加文件 . fs.readFile 读取文件 ...
- mongodb-mms安装
mms是mongo集群监控软件. mms非常吃内存,虚拟机测试时,3G内存启动成功一次,之后重启时失败,建议不少于4G内存. MMS下载地址: https://downloads.mongodb.co ...
- Gradle sync failed: Cannot set the value of read-only property 'outputFile'
错误 Gradle sync failed: Cannot set the value of read-only property 'outputFile' 原因 gradle打包,自定义apk名称代 ...
- 使用RabbitMQ实现延迟任务----实用场景
1. 使用RabbitMQ实现延迟任务