JVM
小小小小小乐
这个作者很懒,什么都没留下…
展开
-
Java的方法调用与重载、覆盖的本质
Java的方法调用与重载、覆盖的本质 我们都知道,Java源代码需要经过前端编译器(Javac)编译后生成class字节码文件,才可以被JVM的类加载器加载;在class文件中,一句句java代码被解析成一个个对应的字节码指令,本文的主旨就是讨论方法调用的字节码指令以及方法重载与覆盖的本质。 在Class字节码指令中,方法的调用涉及到五条指令,他们又分为普通调用指令和动态调用指令: 普通调用指令: invokestatic:调用静态方法,解析阶段确定唯一方法版本 invokespecial:调用方法、私原创 2020-12-10 13:27:41 · 546 阅读 · 1 评论 -
Java中关于i++的一些问题
在本文展开前,读者需要了解一些字节码有关的知识,以及JVM虚拟机栈中栈帧的局部变量表和操作数栈等知识,笔者在这里只给出一些大概的简述。 字节码 Java字节码对于虚拟机,就好像汇编语言对于计算机,属于基本执行指令。 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的结构,所以大多数的指令都不包含操作数,只有一个操作码。 局部变量表 局原创 2020-12-04 21:39:50 · 1016 阅读 · 6 评论 -
浅谈Java类加载器(源码解析)
浅谈Java类加载器 参考内容: 深入理解Java虚拟机(JVM高级特性与最佳实践) ——周志明老师 尚硅谷深入理解JVM教学视频——宋红康老师 我们都知道Java的类加载器结构为下图所示(JDK8及之前,JDK9进行了模块化): 关于三层类加载器、双亲委派机制,本文不再板书,读者可自行百度。 那么在JDK的源码中,三层结构的具体实现是怎么样的呢? Bootstrap ClassLoader(引导类加载器) 引导类加载器是由C++实现的,并非Java代码实现,所以在Java代码中是无法获取到该类加载器原创 2020-12-04 21:02:51 · 1626 阅读 · 9 评论