JVM中常用堆栈跟踪内建指令

在使用Java的程序中难免会遇上程序异常的现象,此时就可以使用JDK下的jstack和jmap来跟踪观察JVM中的内存堆栈信息用以分析,不过注意的是如果是在windows版本或者是开源版中一般都是没有的,如果需要使用需要安装相应的开发调试工具,下面就简单的说一说:

jstack 一般而言之后跟着都是Java程序运行的pid或者是相应的Java代码文件,如:jstack $pid,平时可以把相关的堆栈信息再导出到某一个文件中正用以进一步观察,如:jstack $pid > file.dump

jmap 同jstack的功能效果是差不多的,不过相比而言它会更为的强大一些,同样它之后也是跟着Java程序运行的pid,但是它还有一些参数选项:

默认是没有带这些参数选项的,仅能打印一些简单的信息
-heap    用于打印Java的堆栈的摘要信息
-histo[:live]    用于打印堆栈的实时信息,常用于堆栈的实时跟踪
-clstats    用于打印Java中的类加载的信息
-finalizerinfo    用于打印关于等待确定的对象的信息
-dump:<dump-options>    把相关的堆栈信息dump至二进制文件中用于开发调试工具中使用,如:jmap -dump:format=b,file=Java_jmp.bin $pid
-F    该选项跟着-dump选项一起使用,表示在dump出的二进制文件中不打印打印堆栈的实时信息,但是其他的信息都有打印
-J<flag>    将标志传给Java程序,即在做断点

总之在Java的程序发生异常的时候利用其中相关的堆栈跟踪内建指令都能很好的排查其中的问题

原文地址:http://blog.51cto.com/jim123/2061790

时间: 2024-11-07 20:55:41

JVM中常用堆栈跟踪内建指令的相关文章

mysql内建指令下常用选项参数

在使用mysql的过程中常常应为种种原因,平时要对mysql的备份.优化等等操作写脚本以方便管理.如果要写脚本,那就必须使用到mysql的内建指令的选项参数,这里就简要的说几个比较常用的选项参数: -h, --host=name        设置连接的主机 -u, --user=name        指定使用的用户名 -p, --password[=name]    输入密码 -P, --port=#          指定使用的端口 -A,  --no-auto-rehash      不

Angular基础(五) 内建指令和表单

? Angular提供了一些内建的指令,可以作为属性添加给HTML元素,以动态控制其行为. 一.内建指令 a) *ngIf,可以根据条件来显示或隐藏HTML元素. <div *ngIf='a>b'>show</div>,只有在a>b的时候才会显示这个div. b)*ngSwitchCase,可以根据不同的条件,控制对应的HTML元素的显示. <div[ngSwitch]='myVar'> <div *ngSwitchCase="'a'&quo

Go中常用包笔记 内置builtin(一)

Package builtin 定义了Go的一些预定义的符号.这些符号不需要引用任何包就可以使用. func append(slice []Type, elems ...Type) []Type 给数组切片追加元素,"泛型" func cap(v Type) int 数组,数组指针的元素数量:切片的最大容量:channel的缓冲区大小 func close(c chan<- Type) 关闭channel(只应该由channel的发送方关闭,不能对只能接收的单向channel使用

jvm中堆栈以及内存区域分配

堆栈这个概念存在于数据结构中,也存在于jvm虚拟机中,在这两个环境中是截然不同的意思. 在数据结构中,堆栈是:堆 和栈两种数据结构,堆是完全二叉树,堆中各元素是有序的.在这个二叉树中所有的双亲节点和孩子节点存在着大小关系,如所有的双亲节点都大于孩子节点则 为大头堆,如果所有的双亲节点都小于其孩子节点说明这是一个小头堆,建堆的过程就是一个排序的过程,堆得查询效率也很高.栈是一种先进后出的线性表. 在jvm虚拟机中得堆栈对应内存的不同区域,和数据结构中所说的堆栈是两码事. 下面介绍jvm中得堆栈以及

shell中常用的特殊符号

在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# [email protected] `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != # 井号 (comments) 注释字符 该句不会被执行 ~ 帐户的 home 目录 用户的

mysql的内建日期处理函数

下面的表格列出了MySQL 中最重要的内建日期函数: 函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 EXTRACT() 返回日期/时间按的单独部分 DATE_ADD() 给日期添加指定的时间间隔 DATE_SUB() 从日期减去指定的时间间隔 DATEDIFF() 返回两个日期之间的天数 DATE_FORMAT() 用不同的格式显示日期/时间 时间差函数(TIMESTAMP

JVM中的本机内存跟踪

1.概述 有没有想过为什么Java应用程序通过众所周知的-Xms和-Xmx调优标志消耗的内存比指定数量多得多?出于各种原因和可能的优化,JVM可以分配额外的本机内存.这些额外的分配最终会使消耗的内存超出-Xmx限制. 在本教程中,我们将列举JVM中的一些常见内存分配源,以及它们的大小调整标志,然后学习如何使用本机内存跟踪监视它们. 2.原生分配 堆通常是Java应用程序中最大的内存使用者,但还有其他人.除了堆之外,JVM还从本机内存中分配出一个相当大的块来维护类的元数据,应用程序代码,JIT生成

python基础-常用内建模块

一.collections:内建集合模块. 1.namedtuple:创建一个自定义的tuple对象 2.deque:为了高效实现插入和删除操作的双向列表,适合用于队列和栈 3.defaultdict:Key不存在时返回默认值 4.OrderedDict:保持Key的顺序 5.Counter:一个简单的计数器 二.base64 : 一种用64个字符来表示任意二进制数据的方法 三.struct : str和其他二进制数据类型的转换 四.hashlib : 提供常见的摘要算法,如MD5,SHA1 五

Lua中table内建排序与C/C++/Java/php/等内排序算法的排序效率比较

Lua这类脚本语言在处理业务逻辑作为配置文件的时候方便省事 但是在大量需要 运算的地方就显得略微不足   按照 Lua内建排序算法 对比C/C++ PHP Java等的快速排序算法进行一下比较. 快速排序算法是基于冒泡排序,优化而来,时间复杂度T(n)=O(nLog2n)  ,可见内部采用了二分策略 . 发现在LuaIDE LDT下直接运行效率要比 通过C++加载运行Lua脚本效率高的多  拿500W个数据排序 来说  ,脚本如下 同样的排序脚本Lua解释器的内置排序算法在LDT下,运行速度比通