![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 61
不署名
一个正在缓慢成长的才华有限的Java小菜鸟
展开
-
JVM-类加载过程和双亲委派
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-07-05 21:31:22 · 103 阅读 · 0 评论 -
JVM内存模型
一、Java文件是如何被执行的 1、javac将java文件通过编译器,编译成class文件 2、类加载 1)加载:将class文件加载入内存,文件内容被存放在运行时区域的方法区(1.8开始将永久代弃用,使用元数据区,但是方法区的概念还在),并且在堆里面通过字节流创建Class对象; 2)链接 a 验证:确保class满足规范要求,没有安全问题 b 准备:为类的静态成员分配内存,并设置默认初始值 ...原创 2020-02-19 14:41:25 · 103 阅读 · 0 评论 -
JVM-模型及对象
内存模型 1.程序计数器:线程私有;正在执行的虚拟机字节码指令的地址;如果正在执行的是本地(Native)方法,这个计数器值则应为空(Undefined)。此内存区域是唯一一个在《Java虚拟机规范》中没有规定任何OutOfMemoryError情况的区域。 2.堆:存放对象实例;如果从分配内存的角度看,所有线程共享的Java堆中可以划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer,TLAB),以提升对象分配时的效率。 3.虚拟机栈:每个方法被执行的时候,Jav原创 2021-03-31 21:04:10 · 162 阅读 · 0 评论 -
JVM-对象内存布局
对象头: 用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机(未开启压缩指针)中分别为32个比特和64个比特,官方称它为“Mark Word”。 另外一部分是类型指针,即对象指向它的类型元数据的指针,Java虚拟机通过这个指针 来确定该对象是哪个类的实例。 实例信息: 对象真正存储的有效信息,即我们在程序代码里面所定义的各种类型的字段内容,无论是从父类继承下来的,还是在子类中定义的字段都必原创 2021-03-12 20:36:07 · 107 阅读 · 0 评论 -
JVM-对象的创建
一、检查类加载 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程 二、分配内存 绝对规整的指针碰撞 如果是规整连续的内存空间,一边是已用的空间一边是空闲的空间,那么分配内存仅仅只是把那 个指针向空闲空间方向挪动一段与对象大小相等的距离 不规则的空闲内存列表分配 虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分 配的时候从列表中找到一块足够大的空原创 2021-03-12 20:11:50 · 74 阅读 · 0 评论