![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
jvm
文章平均质量分 90
Java虚拟机学习
La-La-La-La-La vida
这个作者很懒,什么都没留下…
展开
-
Java虚拟机笔记 五、类加载机制
什么是类加载? 把描述类的数据从Class文件加载到内存, 并对数据进行校验、 转换解析和初始化, 最终形成可以被虚拟机直接使用的Java类型, 这个过程被称作虚拟机的类加载机制。 .class是从.java编译而来,理解了class文件结构之后,就需要知道这些数据是如何加载到虚拟机里的。 与那些在编译时需要进行连接的语言不同, 在Java语言里面, 类型的加载、 连接和初始化过程都是在程序运行期间完成的, 这种策略让Java语言进行提前编译会面临额外的困难, 也会让类加载时稍微增加一些性能开销,但是原创 2021-11-23 16:47:26 · 1608 阅读 · 0 评论 -
Java虚拟机笔记 四、类的结构(class文件的结构)
类文件结构 class文件由相应编译器编译而来,用以虚拟机中执行: Java技术能够一直保持着非常良好的向后兼容性, Class文件结构的稳定功不可没 .时至今日, Java发展经历了十余个大版本、 无数小更新, 1997年发布的《Java虚拟机规范》中定义的Class文件格式的各项细节几乎没有出现任何改变。尽管不同版本的《Java虚拟机规范》 对Class文件格式进行了几次更新, 但基本上只是在原有结构基础上新增内容、 扩充功能, 并未对已定义的内容做出修改。 ...原创 2021-11-12 17:29:04 · 322 阅读 · 0 评论 -
Java虚拟机笔记 三、垃圾回收机制
1. 概述 在内存结构中的堆,用于对象的存放。而垃圾回收机制主要的作用就是对堆的内存进行管理。 垃圾收集(Garbage Collection, 简称GC)需要完成的三件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 1.1 为什么要去了解垃圾收集和内存分配? 当需要排查各种内存溢出、 内存泄漏问题时, 当垃圾收集成为系统达到更高并发量的瓶颈时, 我们就必须对这些“自动化”的技术实施必要的监控和调节。 1.2 为什么垃圾回收机制主要服务于堆? 程序计数器、 虚拟机栈、 本地方法栈3个区域随线程而原创 2021-11-11 11:53:45 · 452 阅读 · 0 评论 -
Java虚拟机笔记 二、对象的创建与结构
以下图文均来自周志明《深入理解Java虚拟机 第3版》 目录一个对象的创建new关键字是怎么执行的1. 类加载2. 分配内存内存的分配方式:对象内存的线程安全问题:3. 初始化4. 虚拟机的其他操作5.用户的初始化对象的内存布局对象头实例数据对齐填充创建对象之后是如何访问这个对象的句柄直接指针 一个对象的创建 new关键字是怎么执行的 1. 类加载 当Java虚拟机遇到一条字节码new指令时, 首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用, 并且检查这个符号引用代表的类是否已被加载、原创 2021-11-10 17:06:38 · 743 阅读 · 0 评论 -
Java虚拟机笔记 一、内存的划分
内存区域划分 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 这些区域有各自的用途, 以及创建和销毁的时间, 有的区域随着虚拟机进程的启动而一直存在, 有些区域则是依赖用户线程的启动和结束而建立和销毁。 【线程私有】 程序计数器:一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。 在Java虚拟机的概念模型里, 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令, 它是程序控制流的指示器, 分支、 循环、 跳转、 异常原创 2021-11-10 16:37:04 · 1025 阅读 · 0 评论