文章 2024-10-19 来自:开发者社区

JVM知识体系学习三:class文件初始化过程、硬件层数据一致性(硬件层)、缓存行、指令乱序执行问题、如何保证不乱序(volatile等)

前言 这篇博客主要讲了 class 文件的初始化的流程和两个案例、DCL之单例模式、引出的volicate的作用和原理、进而引出指令重排序、线程(内存)一致性的概念、解决重排序的代码层面volicate 和JVM层次的规范以及CPU层次的内存屏障的三个层次、缓存行的概念、还有指令重排(乱序)的证明过程。 一、class文件初始化过程 1、概述 上一篇博文主要讲的类初始化的类加载过程,也就是...

JVM知识体系学习三:class文件初始化过程、硬件层数据一致性(硬件层)、缓存行、指令乱序执行问题、如何保证不乱序(volatile等)
文章 2023-01-13 来自:开发者社区

【JVM原理探索】class字节码指令操作介绍(下)

线程栈介绍每一个线程都有一个保存帧的栈。在每一个方法调用的时候创建一个帧。一个帧主要包括三个核心部分:操作栈,局部变量数组,和一个对当前方法所属类的常量池的引用。局部变量数组也被称之为局部变量表,它包含了方法的参数,也用于保存一些局部变量的值。参数值得存放总是在局部变量数组的index0开始的。如果当前帧是由构造函数或者实例方法创建的,那么该对象引用(this)将会存放在location0处,然....

文章 2023-01-12 来自:开发者社区

【JVM原理探索】class字节码指令操作介绍(上)

前提概要Java虚拟机的指令由一个字节长度、代表着某种特定操作含义的数字(称为操作码, Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构 成。指令介绍由于限制了Java虚拟机操作码的长度为一个字节(即 0~255),这意味着指令集的操作码总数不可能超过256条。大多数的指令都包含了其操作所对应的数据类型信息,例如:iload 指令用于从局部变量表中加载i....

【JVM原理探索】class字节码指令操作介绍(上)
文章 2023-01-12 来自:开发者社区

【JVM原理探索】class字节码指令方法[调用]详解(上) | Java开发实战

方法调用详解   调用目标在程序代码写好、编译器进行编译时就必须确定下来,这类方法的调用称为解析。解析       在Java语言中符合**“编译期可知,运行期不可变”**这个要求的方法,主要包括静态方法和私有方法两大类,前者与类型直接关联,后者在外部不可被访问,这两种方法各自的特点决定了它们都不可能通过继承或别的方式重写其他版本,因此它们都适合在类加载阶....

【JVM原理探索】class字节码指令方法[调用]详解(上) | Java开发实战
文章 2022-04-15 来自:开发者社区

JVM Class详解之二 Method字节码指令

JVM Class详解之一中我们介绍了Class文件的结构和如何使用16进制编辑器读懂class文件。 今天我们来继续一起下Class文件中Method方法中经过java编译器编译后的Method字节码指令是什么样子的 JVM有哪些字节码指令 首先我们需要了解JVM有哪些字节码指令 第一类load类型 是将本地变量中的数据推送入栈中 (什么是本地变量我们后面聊) iload,iload_,llo....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

Java开发者

Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~

+关注