【深入理解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区没 ...
随机推荐
- Eclipse的简单的用法大全
Eclipse我认为最重要的功能:断点调试 Debug的作用: 调试程序并且查看程序的执行流程 如何查看程序执行的流程 断点(就是一个标记,表示从哪里开始) 设置断点(在你想要断点的代码的左边双击即可 ...
- python+selenium的搭建过程
搭建步骤 1.第一步没啥好说的,肯定是先安装python 下载地址:http://download.csdn.net/detail/intel80586/4297269 全部默认安装即可. 安装完毕后 ...
- (转载)Eclipse快捷键大全
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...
- Java万年历,输入年月获取该年月日历表
//输入年份和月份,打印出这个月的日历表 /* 1.1900年1月1日是星期一 2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天 1) 3.总天数%7得出从星期几开始 注:计 ...
- Android捕捉图像后在SurfaceView上变形显示问题的处理
我们在Android中经常会使用SurfaceView编写自定义的摄像头,可是有的时候会经常会出现图像的变形,我们就会很郁闷的问这到底是为什么呢?其实这个最根本的原因是SurfaceView和PreV ...
- GridView 基本使用
项目中实例一 <asp:GridView ID="gvBatchReceive" runat="server" AutoGenerateColumns=& ...
- Go在windows10 64位上安装
一.安装 1.下载安装包http://www.golangtc.com/download,这是国内的地址,也直接去官网下载. 2.选择适合自己的版本,这里我选择安64位装版go1.9.2.window ...
- ios下虚拟键盘出现"搜索"字样
最近在开发过程中,发现用户输入想要检索的内容,弹出虚拟键盘,在安卓机上虚拟键盘最右下角会有‘搜索’字样,而ios上虚拟键盘最右下角只有‘换行’字样, 这样用户体验就会大打折扣. 安卓机上虚拟键盘 io ...
- Create a soft keyboard
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- NOIP2017:列队
Sol 考场上: 这不是送\(50\)吗,\(Q^2\)递推就好了 然后,怎么又送\(20\)分??? \(woc\),只有半个小时了,顺利没调出来只有\(50\)分 考后: 神\(TM\)一个大于号 ...