![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
蛇皮皮蛋
求大佬笔下留情……
展开
-
Class文件分析(三)
Class文件对方法表中的方法的描述采用的方式基本一致(依次包括了:访问标志(access_flags)、名称索引(name_index)、描述符索引(descriptor_index)、属性表集合(attributes))因为volatile和transient关键字不能修饰方法所以方法表的访问标志中没有ACC_VOLATILE标志和ACC_TRANSIENT标志。相对的synchronized...原创 2018-05-27 08:18:38 · 4407 阅读 · 0 评论 -
类加载器(双亲委派模型)
1.类与类加载器 对于任何一个类,都需要由加载它的类加载器和这个类本身一同确立其在java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。(比较两个类是否'相等',只有在这两个类是由同一个类加载器加载的前提下才有意义,否则即使这两个类来源一个同一个class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等) 这里所指的‘相等’,包括类的Clas...原创 2018-05-29 21:56:32 · 4154 阅读 · 0 评论 -
类加载的时机与过程
虚拟机把描述类的数据从Class文件加载到内存并对数据进行校验,转换解析和初始化最终形成可以被虚拟机直接使用的java类型这就是虚拟机的类加载机制。 类从被加载到虚拟机内存中开始到卸载出内存为止,它的生命周期包括加载(Loading),验证(Verification),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Usin...原创 2018-05-28 21:41:45 · 4307 阅读 · 0 评论 -
Class文件分析(二)
类索引和父类索引都是u2类型的数据,而接口索引集合是一组u2类型的数据集合,class文件中由这三项数据来确定这个类的继承关系。类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名。因为多重继承的关系所以java的父类索引只有1个,除了java.lang.Object以外所有的java类都有父类,所以除了object所有的java类的父类索引都不为0。 类索引和父类...原创 2018-05-26 09:14:12 · 3999 阅读 · 0 评论 -
Class文件分析(一)
class文件的头4个字节称为魔数其作用是确定这个文件是否能被虚拟机接受。紧接魔数的4个字节存储的是class文件的版本号:5-6是次版本号,7-8是主版本号。紧接着主次版本的是常量池入口(占空间最大,在class文件结构中与其他项目关联最多的数据类型,而且是第一个出现的表类型数据项目)其计数是从1开始的。常量池主要存放两大类常量:字面量(文本字符串、final常量等)和符号引用(编译原理方面...原创 2018-05-25 21:21:00 · 4720 阅读 · 1 评论 -
JDK1.8 JVM内存划分
首先先来看看1.7和1.8的时候JVM的划分是什么样的:(原图地址:https://www.processon.com/view/link/5b61ea2ae4b0555b39cfa842) 从这张图可以看到JDK1.8和JDK1.7相比最大的区别是:元空间区取代了永久代,永久代原本主要存放Class和Meta的信息。而元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不...原创 2019-03-05 16:21:47 · 13816 阅读 · 2 评论 -
OutOfMemoryError异常
1.Java堆溢出代码如下:import java.util.ArrayList;import java.util.List;/* * @author zzf * @date 2019年3月6日 下午2:48:03 */public class HeapOOM { static class OOMObject{} public static void main(...原创 2019-03-06 17:13:37 · 6133 阅读 · 0 评论 -
JVM垃圾收集算法
判断一个对象是否能被回收有两种方式:引用计数算法:给对象添加一个引用计数器,每当有地方引用它时,计数器加1;当引用失效时,计数器减1。任何时刻计数器为0的对象就是不能再被使用的。(它无法解决对象之间循环引用的问题。) 可达性分析算法:在主流的程序语言的实现中,都是通过可达性分析来判断对象是否存活。这个算法的基本思想就是通过一系列的“GC Roots”的对象作为起始点,从这些节点开始向下搜索,...原创 2019-03-09 14:01:52 · 3802 阅读 · 0 评论 -
JVM性能监控及处理
JDK命令行工具JDK监控和故障处理工具 jps JVM Process Status Tool,显示指定系统内所有的 HotSpot 虚拟机进程 jstat JVM Statistics Monitoring Tool,用于收集 HotSpot 虚拟机各方面的运行数据 jinfo Configuration Info for Java,显示虚拟机配置信息 jm...原创 2019-03-11 16:13:40 · 4012 阅读 · 0 评论