Java虚拟机------JVM分析工具
jps
1234567891011121314151617 |
jps:Java Virtual Machine Process Status Tool http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html jps [ options ][ hostid ] -q 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数 -m -m 输出传递给main 方法的参数,在嵌入式jvm上可能是null -l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名 -v 输出传递给JVM的参数 jps host 查看host的jps情况(前提:host提供jstatd服务) |
JVM分析工具-jmap1
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
Memory Map 观察运行中的jvm物理内存的占用情况。 官方地址:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html jmap [ option ] pid pid 进程号(常用) 参数如下: -heap:打印jvm heap的情况(垃圾收集器类型) -histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。 -histo:live :同上,但是只打印存活对象的情况 -permstat:打印permanent generation heap(方法区)情况 -finalizerinfo:打印正等候回收的对象信息Memory Map 观察运行中的jvm物理内存的占用情况。 官方地址:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html jmap [ option ] pid pid 进程号(常用) 参数如下: -heap:打印jvm heap的情况(垃圾收集器类型) -histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。 -histo:live :同上,但是只打印存活对象的情况 -permstat:打印permanent generation heap(方法区)情况 -finalizerinfo:打印正等候回收的对象信息 用jmap把进程内存使用情况dump到文件中,再用jhat分析查看。jmap进行dump命令格式如下: jmap -dump:format=b,file=dumpFileName pid jmap -dump:format=b,file=4574.heap20151215 4574 Dumping heap to 4574.heap20151215 Heap dump file created dump出来的文件可以用MAT、VisualVM等工具查看,这里用jhat查看: jhat -port 9998 /tmp/dump.dat 注意如果Dump文件太大,可能需要加上-J-Xmx512m这种参数指定最大堆内存,即jhat -J-Xmx512m -port 9998 /tmp/dump.dat。然后就可以在浏览器中输入主机地址:9998查看了。 |
jinfo
1234567891011121314151617 |
Configuration Info 官方地址:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jinfo.html jinfo [ option ] pid pid 进程号 参数如下: no option 打印命令行参数和系统属性 -flags 打印命令行参数 -sysprops 打印系统属性 -h 帮助 |
jstack1
123456789101112131415161718192021222324252627282930313233 |
jstack:Stack Trace http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstack.html jstack能得到运行java程序的java stack和native stack的信息。可以轻松得知当前线程的运行情况 jstack [ option ] pid [ option ] 参数如下 -l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表. -m打印java和native c/c++框架的所有栈信息. tid指Java Thread id。nid指native线程的id。prio是线程优先级。[0x00007fd4f8684000]是线程栈起始地址 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注) 阻塞,Blocked(重点关注) 执行中,Runnable 暂停,Suspended 对象等待中,Object.wait() 或 TIMED_WAITING 停止,Parked |
jstat
12345678910111213141516171819 |
jstat: Java Virtual Machine Statistics Monitoring Tool http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html Usage: jstat -help|-options jstat -<option> [-t][-h] <pid> [<interva[s|ms]> [<count>]] 参数解释: Options — 选项,我们一般使用 -gcutil /-gc 查看gc情况 pid — VM的进程号,即当前运行的java进程号 interval[s|ms] —— 间隔时间,单位为秒或者毫秒,默认为ms。必须是正整型。 count — 打印次数,如果缺省则打印无数次 例如:jstat -gc 4645 500 10 表示查看进程号为4645的gc 每500ms打印一次 共打印10次 |
123456789101112131415 |
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)S1C:年轻代中第二个survivor(幸存区)的容量 (字节)S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)EC:年轻代中Eden(伊甸园)的容量 (字节)EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)OC:Old代的容量 (字节)OU:Old代目前已使用空间 (字节)PC:Perm(持久代)的容量 (字节)PU:Perm(持久代)目前已使用空间 (字节)YGC:从应用程序启动到采样时年轻代中gc次数YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)FGC:从应用程序启动到采样时old代(全gc)gc次数FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)GCT:从应用程序启动到采样时gc用的总时间(s) |
jstat -gccapacity pid
1234567891011121314151617181920 |
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)NGCMX:年轻代(young)的最大容量 (字节)NGC:年轻代(young)中当前的容量 (字节)OGCMN:old代中初始化(最小)的大小 (字节) OGCMX:old代的最大容量 (字节)OGC:old代当前新生成的容量 (字节)PGCMN:perm代中初始化(最小)的大小 (字节) PGCMX:perm代的最大容量 (字节) PGC:perm代当前新生成的容量 (字节)S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比E:年轻代中Eden(伊甸园)已使用的占当前容量百分比O:old代已使用的占当前容量百分比S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)TT: 持有次数限制MTT : 最大持有次数限制 |
jvm分析工具-jconsole
1234567891011121314151617 |
可视化的jvm监控软件。 可以监控本地或者远程进程。 主要包括:概览、内存、线程、类、VM概要、MBean选项卡。 概览选项卡:呈现四幅图表:主要包括堆内存使用量、类、线程、CPU占有率。 内存选项卡:包含堆内、非堆、内存池的使用量图表和详细信息。相当于jstat命令。 线程选项卡:显示所有的线程的信息和图表。相当于jstack 类选项卡:加载的类的信息。 Vm概要:VM的概要信息包括堆大小,垃圾收集信息、vm参数等。 Mbean选项:managed beans ,被管理的beans |
jvm分析工具-jmx
12345678910111213141516 |
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。开启jmx:无需验证的配置:-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1234 -Dcom.sun.management.jmxremote.ssl=false将-Dcom.sun.management.jmxremote.authenticate=false 去掉就是需要验证信息即:登录名和密码:验证用户的配置文件在$java_home/jre/lib/management/jmxremote.password默认有一个$java_home/jre/lib/management/jmxremote.password.template修改下即可。jmxremote.password.template默认是只读权限。并更改为可写的权限 chmod a+w jmxremote.password修改后把jmxremote.password的读权限取消 a-r 。否则会提示:Error: Password file read access must be restricted: management/jmxremote.access配置下权限。连接时指定ip:端口和jmx连接即可。远程的线程dump可以dump查看,堆的dump是需要从远程拉到本地来查看。 |
jconsole和jvisualvm远程
1234 |
jconsole:在连接界面有显示本地连接或者远程连接,输入相应的主机名和jmx的端口号即可。jvisualvm:在远程的选项添加计算机,然后右键添加jmx连接或者jstatd连接。 |
Java虚拟机------JVM分析工具相关推荐
- java 自带thread分析工具_java自带的jvm分析工具
这段时间觉得很有必要对java的内存分析工具进行熟悉,这样以后出现机器负载较高,或者反应很慢的时候,我就可以查找原因了.上网搜了搜,发现下面这些是比较常用的,然后我在机器上试试了,把结果也贴出来哈. ...
- java虚拟机常用命令工具
java虚拟机常用命令工具 博客分类: 虚拟机 虚拟机jvmjava 一.概述 程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志.堆dump文件.线程d ...
- 深入理解java虚拟机 - jvm高级特性与最佳实践(第三版)_JVM虚拟机面试指南:年薪30W以上高薪岗位需求的JVM,你必须要懂!...
JVM的重要性 很多人对于为什么要学JVM这个问题,他们的答案都是:因为面试.无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪 ...
- 【读书笔记】实战JAVA虚拟机JVM故障诊断与性能优化 读书笔记
文章目录 1.概述 1.1 **第一章:初探java虚拟机** 1.2 认识java虚拟机的基本结构 1.3 常用Java虚拟机参数 1.4 垃圾回收器 1.5 垃圾收集器以及内存分配 1.6 性能监 ...
- 实战java虚拟机 百度云_《实战JAVA虚拟机 JVM故障诊断与性能优化》pdf百度云下载...
内容简介· · · · · · 随着越来越多的第三方语言(Groovy.Scala.JRuby等)在Java虚拟机上运行,Java也俨然成为了一个充满活力的生态圈.<实战Java虚拟机--JVM ...
- Java 虚拟机(JVM)原理介绍
Java 虚拟机[JVM]原理介绍 1.概述 2.Java类的加载原理机制 2.1 .Java类的加载过程 2.2 .Class loader (类加载器) 2.2.1 类的生命周期 2.2.1.1 ...
- 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解
一:概述 说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释 ...
- Java虚拟机(JVM)与Java内存模型(JMM)学习笔记
Java虚拟机[JVM]与Java内存模型[JMM]学习笔记 Java虚拟机(JVM) 三种JVM JVM 位置 JVM的主要组成部分及其作用 类加载器 双亲委派机制 沙箱安全机制 Java本地接口( ...
- java虚拟机现状_深入理解java虚拟机的故障处理工具
前言 本文主要给大家介绍的是java虚拟机的故障处理工具,文中提到这些工具包括: 名称 主要作用 jps JVM process Status Tool, 显示指定系统内所有的HotSpot虚拟机进程 ...
最新文章
- Java项目:医院分诊挂号住院管理系统(java+SpringBoot+FreeMarker+Mysql)
- Netty--ChannelHandler和ChannelPipeline
- swift5主线程延迟操作的几种写法
- fov视场角计算_图像传感器集成计算功能,赋能机器视觉技术
- linux_负载分析之LoadAverage
- python编程案例教程-Python程序开发案例教程
- 空洞卷积(Dilated Convolution)简介
- 实证研究的步骤_本科生毕业论文设计可以用到的研究方法有哪些
- 1年时间,年薪增加10万,前端小兵的我是如何做到的?
- 戴尔-卡耐基:《人性的优点 How to stop worrying and start living》
- 前端页面模拟浏览器搜索功能Ctrl+F实现
- 实现LOL游戏中英雄技能的释放
- php简单后台,ThinkPHP简单网站后台
- 如何解决Oracle11g使用dmp命令无法导出空表问题
- L2+ 概念要火!英伟达和英特尔都释放了什么信号?| CES 2019 ...
- (一)1.考研数一高数 之 函数及其性质
- jquery-select2实现省市区三级联动(拓展SpringMVC后台方法)
- 算法-数据结构-演示网站(USF)
- 安装SQL2000时出现:安装程序配置服务器失败。参考服务器错误日志和 C:/WINDOWS/sqlstp.log 了解更多信息。
- c++ c语言编写抽学号小程序
热门文章
- android 推流地址可以多人用,Android直播实现(一)Android端推流、播放
- CJOJ 【DP合集】最长上升序列2 — LIS2
- C#实现的UDP收发请求工具类实例
- S7-300/400 系统 Profibus DP 通讯故障诊断实用方
- 编写让别人能够读懂的代码
- [上海]招募.net网站测试员(实习/见习)
- java byreference_Java中各种引用(Reference)解析
- 計算機二級-java09
- 基础知识—数据类型-常量及符号
- mysql 读取data文件_利用mysql的LOAD DATA INFILE的功能读取客户端文件