深入理解Java虚拟机之读书笔记四 性能监控与故障处理工具

  JDK的bin目录下存在很多有效的命令行工具,它们就是jdk\lib\toos.jar类库的封装。

  一、jps:虚拟机进程状况工具,查询出LVMID。  

  二、jstat:虚拟机统计信息监视工具,

  三、jinfo:Java配置信息工具

  实时地查看和调整虚拟机的各项参数。

  四、jmap:Java内存映像工具:生成堆转储快照

  不仅可以获取dump文件,可以查询finalize执行队列,java堆和永久代的详细信息,空空间使用率、当前的收集器等。

  五、jhat:虚拟机堆转储快照分析工具

  六、jstack:Java堆栈跟踪工具

  生成虚拟机当前时刻的线程快照:线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,主要目的是定位线程出现长时间停顿的原因,如线程死锁。

  JDK中除了以上的命令行工具,还提供了两个可视化工具。JConsole和VisualVM。

  一、JConsole:Java监视与管理控制台

  基于JMX的可视化监视与管理工具。

  二、VisualVM:多合一故障处理工具。

  基于NetBeans平台开发,具备插件扩展功能。

  三、BTrace是一个很有用的工具。

  

时间: 2024-08-05 00:41:47

深入理解Java虚拟机之读书笔记四 性能监控与故障处理工具的相关文章

《深入理解Java虚拟机》读书笔记---第一章 走进Java

一.为什么要读此书 <深入理解Java虚拟机>这本书读了很多次,每次读都会有不一样的感受.首先说一下为什么要读这本书,如果把Java比喻成乾坤大挪移,那了解虚拟机的工作原理就是练习九阳神功,java语言是招式,对虚拟机的认识是内功心法,只有内功心法强大,所使的招式才强大,这就是为什么阳顶天只能把乾坤大挪移练到第四层,而张无忌能练到第七层.由于java虚拟机的强大,把很多功能都隐藏了,例如内容管理,垃圾回收机制等,使得很多java程序猿对这一块的知识所有缺失,编码的时候也是似懂非懂的,以至于遇到

《深入理解Java虚拟机》读书笔记---第二章 Java内存区域与内存溢出异常

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来.这一章就是给大家介绍Java虚拟机内存的各个区域,讲解这些区域的作用,服务对象以及其中可能产生的问题. 1.运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域. 1.1程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型中里,字

《深入理解Java虚拟机》读书笔记:Java内存区域

xmind文件下载地址 <深入理解Java虚拟机>读书笔记:Java内存区域,布布扣,bubuko.com

《深入理解Java虚拟机》读书笔记——第1章 走近Java

(注:原文请见<深入理解Java虚拟机>周志明 著,知识点部分参考百度百科) 总述 第1章分为两个部分:Java概述及自己动手编译JDK的教程. 1 Java概述 介绍了Java的整体特性.Java的技术体系组成.Java及JVM的发展史. 1.1 Java的总体特性 1)Java不仅仅是一门编程语言,更是由一系列计算机软件和规范组成的技术体系. 2)Java具有众多优点: a.Java虚拟机在千差万别的物理机上建立了统一的运行平台,实现了跨平台性.(主要) b.提供了相对安全的内存管理和访问

深入理解Java虚拟机之读书笔记一 自动内存管理机制

一.运行时数据区域 1.程序计数器是线程的私有空间,每个线程都有.针对线程执行的是Java代码还是Native代码有两种取值,Java代码时:虚拟机字节码指令的地址:Native代码时:计数值为Undefined.不可能出现OutOfMemeoryError情况. 2.Java虚拟机栈是线程的私有空间,每个线程都有.栈中局部变量表的部分是在编译期间完成分配的,每个局部变量空间的大小为32为长度.栈的深度太长,抛出StackOverflowError异常.栈可扩展时,如果内存不够,会抛出OutOf

《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一

Grabage Collection      GC GC要完成的三件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 内存运行时区域的各个部分中: 程序计数器.虚拟机栈.本地方法栈这3个区域随线程而生,随线程而灭. 栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈的操作. 每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此, 这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需过多考虑回收的问题. 因为方法结束或者线程结束时,内存自然就跟着回收了. 而ja

深入理解Java虚拟机之读书笔记三 内存分配策略

一般的内存分配是指堆上的分配,但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配.对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况下直接分配在老年代中,分配的规则并不是百分之百固定的.细节取决于哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置. 一.对象优先在Eden分配 优先在新生代的Eden区中分配,当不够时,发起一次Minor GC. 二.大对象直接进入老年代 需要连续大量内存空间的Java对象,长字符串和数组等. 三.

深入理解Java虚拟机之读书笔记二 垃圾收集器

1.对象已死? a.引用计数算法:缺点是它很难解决对象之间的相互循环引用的问题,Java语言中没有选用它. b.根搜索算法(GC Roots Tracing):通过一系列的名为"GC Roots"的对象作为起始点,开始向下搜索,走过的路径称为引用链,当一个对象没有任何引用链相连,表面此对象不可达.在Java语言中,可作为GC Roots的对象包括: 虚拟机栈(栈帧中的本地变量表)中的引用的对象. 方法区中的类静态属性引用的对象. 方法区中的常量引用的对象. 本地方法栈中JNI的引用的对

《深入理解java虚拟机》读书笔记:对象的内存布局

一个int类型4占4个字节的内存,一个byte一个字节.但是他们的封装类型Integer,Byte对象内存损耗还是一样的吗?并不是,而且差距十分大. HotSpot虚拟机中,一个普通的Java对象由3部分构成 对象头 类内定义的实例数据 内存对齐 2不必多说,Java对象不存定义好的实例字段存啥. 对象头又分两部分,Mark Word和类型指针.Mark Word存储对象运行时数据,如对象的hashcode,对象的分代年龄,锁状态等等.对象的分代年龄完全是为了JVM的Young GC设计的,每经