![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm虚拟机
文章平均质量分 88
spongeboblz
不要怂,就是干
展开
-
JAVA虚拟机结构之数据类型
JAVA虚拟机在编译和执行我们的程序的过程中,同样是要依赖数据类型,来对不同数据,运算操作,引用等信息进行区分。JAVA虚拟机的数据类型与java语言的相似,但是却不能混淆为同一事物。JAVA虚拟机的数据类型可以分为这两类:原始类型(primitive type,也翻译为原生类型或基本类型)和引用类型。与之对应,也存在原始值和引用值两种类型的数值。原始类型(primitive type)...原创 2018-09-07 21:41:16 · 1070 阅读 · 0 评论 -
JVM之方法调用
方法调用并不等于方法执行,方法调用的唯一目的就是确定被调用方法的版本。在程序运行中,进行方法调用是最普遍,最频繁的操作,但是在Class文件中存储的都是符号引用,而不是实际方法在内存中实际的入口地址(直接引用)。而且我们知道java中是支持方法的重载与重写的,那么根据符号引用找到正确的方法(直接引用)进行调用的工作就显得更加的复杂与困难了。虚拟机的方法调用中用到的方法有静态解析、静态分派、动态...原创 2018-11-16 23:57:50 · 299 阅读 · 0 评论 -
JVM类加载器之加载过程
我们知道在jvm中是通过各类形形色色的类加载器对class文件进行加载后才能进行使用的,而且jvm中能提供动态加载的特性也全是依靠类加载的机制,它已经成为了Java体系中一块重要的基石。但是类加载器究竟是如何工作的,什么时候开始加载类,又有哪些具体步骤,类的生命周期又是如何的?我觉得了解这些对我们了解jvm虚拟机是非常有帮助的。概述类从被加载到虚拟机内存中开始,到卸载出内存,它的整个...原创 2018-11-07 23:30:07 · 3175 阅读 · 2 评论 -
JVM类加载器之自定义类加载器
废话不多说,自定义的类加载器都要继承于java.lang.ClassLoader类,它定义了默认的加载的规范,并提供了一些方法由我们重写而实现自己的加载逻辑。所以我们要先了解一下ClassLoader类。java.lang.ClassLoaderClassLoader为我们提供了几个方法,其中我们可能比较会需要重写的是findClass()与loadClass()方法。现在我们来看一下...原创 2018-11-10 00:04:08 · 889 阅读 · 0 评论 -
JVM之类加载器
概述我们知道我们的源码得先编译为二进制的class文件,才能被虚拟机识别接收。但虚拟机具体是如何加载这些class文件进入虚拟机内存并使用的呢?首先就是依靠“类加载器”进行加载的。在java语言中,类型的加载和连接过程都是在程序运行时期完成的,这样会在类加载时增加一些性能开销,但是却能为java应用提供高度的灵活性。因为java的类加载机制是在运行期间动态加载和动态连接所以java天生就有...原创 2018-11-01 21:23:36 · 172 阅读 · 0 评论 -
JVM 符号引用(Symbolic References)
符号引用什么是符号引用?在说符号引用之前我们先来看看直接引用,直接引用是什么,比如就是你拥有你所需要数据的地址值,可以直接根据地址值获取到数据。但是 java语言是解释性的语言,然后由于总总原因(我也不知道对不对的原因)在某些时刻有些东西的直接地址还并不存在,是无法使用直接引用。这时候就可以用到符号引用了。符号引用:符号引用是一个字符串,它给出了被引用的内容的名字并且可能会包含一些其他关于...原创 2018-10-15 23:52:25 · 7994 阅读 · 2 评论 -
Class类文件结构之常量表
我们已知的在Class文件里,常量池占的比重是非常大的,其它结构中或多或少的都要通过索引来常量池获取它们所需要的信息。但常量分为哪几种类型呢,常量又是如何存储的呢,这是我们本博客的所要讲解的内容具体关于常量池的其它问题,请参考Class类文件结构 的常量池一节常量表(cp_info)的类型主要分为两大类:字面量(Literal)和符号引用(Symbolic References);常量表共...原创 2018-10-15 22:46:27 · 1446 阅读 · 1 评论 -
Class类文件的结构
我们知道我们编写的java代码只有编译成class文件之后才能被jvm虚拟机使用,不仅如此,其他依靠与jvm虚拟机执行的语言代码一样是要编译成class文件之后才能被使用。很明显的class文件格式(也称字节码)是jvm虚拟机支持的标准的可执行的代码格式。class文件格式是以(8位)字节为基础单位的二进制流。各个数据项目严格按照顺序紧凑的排列在class文件之中,之间不允许有任何分隔符,这使...原创 2018-10-11 21:46:51 · 433 阅读 · 0 评论 -
JAVA虚拟机结构之栈帧
概述(Stack Frame)栈帧(Stack Frame) 是用于虚拟机执行时方法调用和方法执行时的数据结构,它是虚拟栈的基本元素。每一个方法从调用到方法返回都对应着一个栈帧入栈出栈的过程。最顶部的栈帧称为当前栈帧,栈帧所关联的方法称为当前方法,定义这个方法的类称为当前类,该线程中,虚拟机有且也只会对当前栈帧进行操作。栈帧的作用有存储数据,部分过程结果,处理动态链接,方法返回值和异常...原创 2018-09-12 21:20:33 · 10087 阅读 · 2 评论 -
JAVA虚拟机结构之运行时数据区
jvm的运行时数据区根据用途一共可以分为这几类:pc寄存机,java虚拟机栈,java堆,方法区,运行时常量池,本地方法栈。其中java堆,方法区,运行时常量是公有的数据区,随着虚拟机的启动而创建,随着虚拟的退出而销毁。而pc寄存器,java虚拟机栈,本地方法栈则是线程私有的,随着线程的开始和结束而创建和销毁,运行时数据区如图下。pc(Program Counter)寄存器每...原创 2018-09-05 23:10:33 · 264 阅读 · 0 评论 -
spongeboblz的博客——JVM
JAVA虚拟机结构之运行时数据区JAVA虚拟机结构之数据类型JAVA虚拟机结构之栈帧Class类文件的结构Class类文件结构之常量表JVM 符号引用(Symbolic References)JVM之类加载器JVM类加载器之自定义类加载器JVM之方法调用linux 编译openjdk失败记...原创 2018-12-31 20:22:31 · 427 阅读 · 0 评论