![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM虚拟机
文章平均质量分 59
天宇365
沉淀~
展开
-
简述虚拟机字节码执行-分派规则
静态类型多分派:典型-方法重载 编译时,编译器会根据类型和方法参数来分派,属于多分派类型 动态类型单分派:典型-方法重写 运行阶段虚拟机的选择,即动态分派的过程:运行时,方法参数已经由编译时确定为特定类型,不会影响其选择,唯一影响虚拟机选择的因素只有该方法的实际接收者,具体是哪个类。 只有一个宗量作为选择依据。属于单分派类型 运行示例: 总结如下: ...原创 2021-02-24 15:18:30 · 115 阅读 · 0 评论 -
深入理解Java虚拟机--浅析class文件字节码【JVM虚拟机(二)】
代码示例如下: package com.demo; public class Test { int add() { int a = 3; int b = 8; return a + b; } } javap查看编译机制 解析指令集: int add(); Code: 0: iconst_3 压入常量3到操作数栈顶 1: istore_1 将栈顶int型数值...原创 2021-02-22 19:43:04 · 72 阅读 · 0 评论 -
深入理解Java虚拟机--虚拟机字节码指令表
《深入理解Java虚拟机JVM高级特性与最佳实践》附录B 虚拟机字节码指令表 字节码 助记符 指令含义 0x00 nop 什么都不做 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1 将int型-1推送至栈顶 0x03 iconst_0 将int型0推送至栈顶 0x04 iconst_1 将int型1推送至栈顶 0x05 iconst_2 将int型2推送至栈顶转载 2021-02-22 17:59:44 · 101 阅读 · 0 评论 -
<init>构造器和<cinit>以及构造方法的关系
1、 首先我们先来找到init和cinit方法。 java源文件 package com.demo; public class Test { private static int a = 1; protected void testMethod() { } public static void main(String[] args){ System.out.println(a); } } 使用javap -verbose class.原创 2021-02-19 11:55:21 · 2212 阅读 · 0 评论 -
浅析class文件字节码【JVM虚拟机(一)】
前言 分析之前的说明: 1、一位十六进制的数等于四位二进制的数。一个字节等于8位二进制数,2位16进制为一个字节。 2、这张图是一张java字节码的总览图,我们也就是按照上面的顺序来对字节码进行解读的。一共含有10部分,包含魔数,版本号,常量池等等,接下来我们按照顺序一步一步解读。 3、了解一下常量池的项目类型表 4、ASCII 开始 1、首先上一个测试的java代码。 package com.demo; public class Demo { private int a原创 2021-02-08 14:40:20 · 133 阅读 · 0 评论