JVM指令集、类加载子系统介绍 Jvm

Jvm整体架构图: Jvm指令集架构: 指令集架构分为两种: 1.基于栈的指令集架构(Java编译器是基于栈的指令集架构)。 2.基于寄存器指令架构。 栈的指令架构: 优势:跨平台、零地址指令、指令集更小、移植性高。(编译器更容易实现) 劣势:指令多,性能下降(实现同样的功能需要更多指令) 寄存器指令架构: 优势:性能优秀、执行效率高,指令少 劣势:移植性...
晨曦 发布于 

Synchronized底层实现原理 并发编程

synchronized介绍: synchronized 关键字在多线程环境下作为线程安全的同步锁 synchronized作用: 1.同步代码块(当前对象锁[this] 或 自定义对象锁) 2.同步静态方法(当前类的Class实例,Class数据存在永久代中,该类全局锁) 3.同步非静态方法(当前对象锁) 同步代码块: //...
晨曦 发布于 

JVM栈帧内部结构-局部变量表 Jvm

栈帧内部结构: 1) 局部变量表(Local Variables) 2) 操作数栈(Operand Stack)或表达式栈 3) 动态链接(Dynamic Linking)或指向运行时常量池的方法引用 4) 方法返回地址(Return Address)或方法正常退出或异常退出的定义 5) 一些附加信息 局部变量表(Local Variables): 局部变...
晨曦 发布于 

JVM栈帧内部结构-操作数栈 Jvm

基本概念:         操作数栈是基于数组的方式实现的。         在方法执行过程中,根据字节指令,往栈中写入(入栈/push)数据或提取(出栈/pop)数据。         某些字节码指令将值压入操作数栈,其余的字节码指令将操作数取出栈,使用它们后再把结果压入栈。(比如:复制,交换,求和等操作)         操作数栈主要用于保存计算过程的中...
晨曦 发布于 

JVM运行时数据区-程序计数器 Jvm

运行时数据区分为:         程序计数器(PC寄存器)、虚拟机栈、本地方法栈、方法区、堆区 线程共享区:方法区,堆区。 线程独立区:程序计数器(PC寄存器)、虚拟机栈、本地方法栈。 JVM线程: 1.一个JVM线程对应一个Runtime(运行时数据区) 2.JVM允许一个应用有多个线程并执行。 3.当一个Java线程准备好执行后,此时操作系统的本地线...
晨曦 发布于 

JVM运行时数据区-虚拟机栈 Jvm

Java虚拟机栈(Java Virtual Machine Stack): 基本概述: 跨平台设计,Java指令根据栈来设计的,不同平台CPU架构不同,所以不能设计为基于寄存器的 线程私有的,每个线程创建时都会创建一个虚拟机栈,其内部保存一个个栈帧(Stack Frame),一个栈帧对应一个Java方法。 内存中的栈与堆的区别: 堆:存储数据区域 栈:运...
晨曦 发布于 

Java内存模型-volatile可见性 Java基础

Java内存模型:         Java线程内存模型与CPU缓存模型类似,基于CPU缓存模型建立,Java线程内存模型是标准化的,用于屏蔽各种硬件和操作系统的内存访问差异。 主要分为三大模块: 线程、工作内存、主内存 Java内存模型数据原子操作: read(读取) 从主内存读取数据 load(载入) 将主内存读取到的数据写入工作内存 us...
晨曦 发布于 

Java内存模型-volatile有序性 Java基础

/** * @Description:Java内存模型-有序性 * @Author:chenxi * @Date:2020/3/22 **/ public class JMMOrderTest { private static int a, b = 0; private static int x, y = 0; publ...
晨曦 发布于 

JVM栈帧内部结构-方法返回地址 Jvm

方法返回地址(Return Address): 存放调用该方法的PC寄存器的值。 方法结束方式: 1) 正常结束 2) 出现未处理异常,非正常退出(通过异常完成出口退出的不会给他的上层调用者生产任何的返回值) 无论通过哪种方式退出,在方法退出后到该方法被调用的位置,方法正常退出时,调用者的PC计数器的值作为返回地址,即调用该方法的指令的下一条指令地址,而通过...
晨曦 发布于 

MySql索引数据结构以及存储引擎 Mysql

MySql索引数据结构: 1.二叉树 2.红黑树 3.Hash表 4.B-Tree 二叉树(Binary Search Tree): 存储结构:每个结点最多有两个子树的树结构。子树通常被称为“左子树”(left subtree)和“右子树”(right subtree)。 1.若左子树不空,则左子树上所有结点的值均小于它的根结点的值 2.若右子树不空,则右子...
晨曦 发布于