介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式: jstack [-l] pid 主要分为两个功能: a.  针对活着的进程做本地的或远程的线程dump: b.  针对core文件做线程dump. jstack用于生成java虚拟机当前时刻的线程快照.线程快照是当前jav…
本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. jstat命令用来查看JVM统计信息,可以查看类加载信息.垃圾收集的信息.JIT编译信息等等,功能非常丰富. 所有的JDK工具都可以在Oracle官网的 Java Tools Reference 文档中找到使用说明,这是主要参考,包括命令格式.参数内容.输出信息等等. jstat命令格式: jstat [ generalOption | outputOptions vmid [ interva…
JDK安装后,没有配置环境变量,也可以java -version查看到版本信息 原因是:jdk安装过程,java.javaw.javaws三个命令被复制到C:\windows\system32目录下 所以,如果运行命令javac,会提示“javac不是内部或外部命令” 其实高版本的JDK 只要成功安装后就能正常使用了,但为了保险起见,还是把环境变量配置为好 配置完成之后,你查看javac就发现正常了.…
Java多线程——查看线程堆栈信息 摘要:本文主要介绍了查看线程堆栈信息的方法. 使用Thread类的getAllStackTraces()方法 方法定义 可以看到getAllStackTraces()方法的返回值是一个Map对象,key是Thread的实例,value是一个StackTraceElement实例数组: public static Map<Thread, StackTraceElement[]> getAllStackTraces() 使用 可以使用这个静态方法在页面上循环打印…
的代码上加上 断点 运行 进入Terminal jps 查看进程号 jstack 进程号  查看线程的信息 jstack pid 此时进去DEBUG 端F9 跑完程序 再回到Terminal 中 就能看到线程的一些信息 jps -lvm 查看堆栈信息…
目录 1.类文件结构 1.1 Class类文件结构 1.2 魔数与Class文件的版本 1.3 常量池 1.4 访问标志 1.5 类索引.父索引与接口索引集合 1.6 字段表集合 1.7 方法集合 1.8 属性表集 1.8.1 Code属性 1.8.2 Exception属性 1.8.3 LineNumberTable属性 1.8.4 LocalVariableTable属性 1.8.5 SourceFile属性 1.8.6 ConstantValue属性 1.8.7 InnerClass属性…
java虚拟机jvm启动后java代码层面发生了什么? 0000 我想验证的事情 java代码在被编译后可以被jdk提供的java命令进行加载和运行, 在我们的程序被运行起来的时候,都发生了什么事情, 下面就来探究下这个问题, 这个问题被拆成了两个问题, 第一个问题用来确定发生了哪些事情, 第二个问题用来确定这些事情是如何进行的. java进程里面都发生了哪些活动? 这些活动在java代码(反编译或者是源码)级别有所体现吗? 0001 寻找验证的方式 当我在探究上面两个问题时, 我想了很多方式去…
类加载过程     类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下图所示: 其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段.在这五个阶段中,加载.验证.准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定).另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段…
类加载的过程包括: 加载class到内存,数据校验,转换和解析,初始化,使用using和卸载unloading过程. 除了解析阶段,其他过程的顺序是固定的.解析可以放在初始化之后,目的就是为了支持动态加载. 从java开发者来讲,我们并不关心具体细节,只要知道整个流程以及每个流程大体干了那些事情. 每个流程具体对开发代码会有那些影响就可以了. 类的加载流程 1.加载loading 在加载过程中,虚拟机需要完成3件事情: 1)通过一个类的全限定名来获得此类的二进制字节流. 2)将这个直接流的静态存…
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17881581 类加载过程     类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下图所示: 其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段.在这五个阶段中,加载.验证.准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持J…