JVM
文章平均质量分 87
你在幹神魔
这个作者很懒,什么都没留下…
展开
-
虚拟机类加载机制
类加载的时机 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备、解析三个部分被称为连接。 六种立即初始化类的情况:(类没有初始化) 遇到new、getstatic、putstatic、或者invokestatic这四条字节码指令时,会触发初始化阶段,代码场景有:①使用new关键字实例化对象;②读取或设置一个类型的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外)的时候;③调用一个类型的原创 2021-11-08 14:55:59 · 416 阅读 · 0 评论 -
类文件结构
Class类文件的结构 魔数与Class文件的版本 每个Class文件的头4个字节被称为魔数,它的唯一作用是确定这个文件是否是一个能被虚拟机接受的Class文件。使用魔数来标识而不是扩展名的原因是拓展名可以被随意更改,Class文件的魔数值为0xCAFEBABE。 紧接着魔数的4个字节存储的是Class文件的版本号:第5和第6和字节是此版本号,第7和第8个字节存储的是主版本号。 常量池 在主、次版本号之后的是常量池入口,常量池可以比喻为Class文件里的资源仓库,它是Class文件中与其他项目原创 2021-11-07 11:11:22 · 75 阅读 · 0 评论 -
虚拟机性能监控、故障处理工具
基础故障处理工具 jps:虚拟机进程状况工具 可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID。 jps [ options ] [ hostid ] jstat:虚拟机统计信息监视工具 用于监视虚拟机各种运行状态信息的命令行工具它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。是运行期定位虚拟机性能问题的常用工具。 jstat [ option vmid [interval[s|ms] [coun原创 2021-11-05 10:21:48 · 79 阅读 · 0 评论 -
垃圾收集器与内存分配策略
对象已死 引用计数算法 引用计数算法是在对象中添加一个引用计数器,每当有一个地方引用该对象时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能在被使用的。 优点: 原理简单,判定效率高 缺陷: 单纯的引用计数没有办法解决对象之间循环引用的问题。 可达性分析算法 通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”,如果某个对象到GC Roots间没有任何引用链相连,则证明此对象是原创 2021-11-04 14:46:48 · 79 阅读 · 0 评论 -
Java内存区域与内存溢出异常
运行时数据区域 JVM所管理的内存包括以下几个运行时数据区域。 程序计数器 程序计数器是一块较小的内存,可以认为是当前线程执行的字节码的行号指示器,在概念模型中,字节码解释器工作时就是通过改变程序计数器的值来选取下一条要执行的字节码指令。 在多线程的情况下,每个线程都有不同的要执行的字节码,所以程序计数器是一块线程私有的内存区域。 虚拟机栈 虚拟机栈描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调原创 2021-11-03 15:39:18 · 110 阅读 · 0 评论