- 博客(6)
- 收藏
- 关注
原创 JVM——虚拟机字节码执行引擎
虚拟机的执行引擎由软件自行实现的,可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式不同的虚拟机实现,执行引擎分为:解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)所有的Java虚拟机的执行引擎输入、输出都是一致的:输入字节码二进制流,处理过程是字节码解析执行的等效过程,输出执行结果。
2024-09-13 18:25:04 873
原创 JVM——虚拟机的类加载机制
java.lang.ClassLoader中添加一个新的 protected方法findClass(),引导用户编写的类加载逻辑时尽可能去重写这个方法,如果父类加载失败,会自动调用自己的findClass()方法来完成加载,而不是在 loadClass()中编写代码,避免loadClass()被子类覆盖。如果数组的组件类型(Component Type,指的是数组去掉一个维度的类型)是引用类型,那就递归采用本节中定义的加载过程去加载这个组件类型,数组C将被标识在加载该组件类型的类加载器的类名称空间。
2024-09-13 15:43:25 1751
原创 JVM——类文件结构
设计思想:平台无关 <— 实现方式:JVM和字节码存储格式Java虚拟机不与包括Java语言在内的任何程序语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联程序(.java)—> 编译器 —> 字节码(.class)—> JVM因此class文件需要规范格式。
2024-09-13 13:08:21 330
原创 JVM——GC策略及经典垃圾收集器
G1把连续的Java堆划分为多个大小相等的独立区域(Region),每一个Region都可以根据需要,扮演新生代的Eden空间、Survivor空间,或者老年代空间,收集器能够对扮演不同角色的 Region采用不同的策略去处理。当对象拥有了一份新的副本时,只需要修改一处指针的值,即旧对象上转发指针的引用位置,使其指向新对象,便可将所有对该对象的访问转发到新的副本上。强引用:传统引用的定义(reference类型的数据中存储的数值代表的是另外一块内存的起始地址), GC永远不会回收被强引用的对象。
2024-09-09 01:17:47 1897 1
原创 JVM——Java内存、HotSpot虚拟机中的对象和OOM异常实战
Java程序运行时,由java虚拟机管理内存。需要知道虚拟机是如何管理内存,才能处理内存泄漏/溢出问题。
2024-09-09 00:24:41 1736
原创 原码反码补码小调研
储存在计算机中的数据,本质都是以二进制码来储存的,而数据当然不能只用来储存,计算才是它们最重要的用处。原码、反码和补码是数据的三种表示形式,各有各的优点,但只有补码才是计算机所采用的来储存和计算数据的形式。首先来说原码,原码就是数字的二进制表示,在前面加上符号位,正数为0,负数为1。原码是人脑最为适应和接受的,但是机器用它来计算却不优。两个正数相加还可以得到正确的数值,但是做减法(由于计算机只有...
2019-07-06 09:22:50 417
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人