【Java JVM】 本地方法接口和本地方法栈
【Java JVM】 本地方法接口和本地方法栈Metadatatitle: 【Java JVM】 本地方法接口和本地方法栈
date: 2023-06-27 08:41
tags:
- 行动阶段/完成
- 主题场景/程序
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/Java/JVM
categories:
- Java
keywords:
- Java/JVM
description: 【Java JVM】 本地方法接口和本地方法栈
概述本地方法
一个 Native Method 是一个 Java 调用非 Java 代码的接囗
本地接口的作用是融合不同的编程语言为 Java 所用,它的初衷是融合 C/C++程序。
与 Java 环境的交互
与操作系统的交互
Sun’s Java
本地方法栈
Java 虚拟机栈于管理 Java 方法的调用,而本地方法栈用于管理本地方法的调用。
线程私有的
允许被实现成固定或者是可动态扩展的内存大小。
本地方法是使用 C 语言实现的。
什么是本地方法?简单地讲 ...
【Java JVM】 虚拟机栈
【Java JVM】 虚拟机栈Metadatatitle: 【Java JVM】 虚拟机栈
date: 2023-06-26 20:10
tags:
- 行动阶段/完成
- 主题场景/程序
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/Java/JVM
categories:
- Java
keywords:
- Java/JVM
description: 【Java JVM】 虚拟机栈
概述内存中的栈与堆
栈是运行时的单位,而堆是存储的单位
栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。
堆解决的是数据存储的问题,即数据怎么放,放哪里
栈帧
在这个线程上正在执行的每个方法都各自对应一个栈帧(Stack Frame)。
局部变量表(Local Variables)
定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引用(reference),以及 returnAddress 类型。
线程的私有数据,不存在数据安全问题
局部变量 ...
【Java JVM】 程序计数器
【Java JVM】 程序计数器Metadatatitle: 【Java JVM】 程序计数器
date: 2023-06-26 20:04
tags:
- 行动阶段/完成
- 主题场景/程序
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/Java/JVM
categories:
- Java
keywords:
- Java/JVM
description: 【Java JVM】 程序计数器
概述PC 寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。
运行速度最快的存储区域
线程私有的
【Java JVM】 程序计数器JVM 中的程序计数寄存器(Program Counter Register)中,Register 的命名源于 CPU 的寄存器,寄存器存储指令相关的现场信息。CPU 只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为 PC 计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误 ...
【Java JVM】 运行时数据区
【Java JVM】 运行时数据区Metadatatitle: 【Java JVM】 运行时数据区
date: 2023-06-26 19:52
tags:
- 行动阶段/完成
- 主题场景/程序
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/Java
categories:
- Java
keywords:
- Java
description: 【Java JVM】 运行时数据区
【Java JVM】 运行时数据区概述本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段
内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行 JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在着部分差异。结合 JVM 虚拟机规范,来探讨一下经典的 JVM 内存布局。
我们通过磁盘或者网络 IO 得到的数据,都需要先加载到内存中,然后 CPU 从内存 ...
【Java JVM】 类加载子系统
【Java JVM】 类加载子系统Metadatatitle: 【Java JVM】 类加载子系统
date: 2023-06-26 14:31
tags:
- 行动阶段/完成
- 主题场景/程序
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/Java/JVM
categories:
- Java
keywords:
- Java/JVM
description: 【Java JVM】 类加载子系统
概述
加载阶段
通过一个类的全限定名获取定义此类的二进制字节流
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口
链接阶段
验证(Verify) 保证被加载类的正确性
准备(Prepare) 为类变量分配内存并且设置该类变量的默认初始值,即零值。
解析(Resolve)将常量池内的符号引用转换为直接引用的过程。
初始化阶段执行类构造器方法<clinit()>的过程
...
【Java JVM】 JVM与Java体系结构
【Java JVM】 JVM与Java体系结构Metadatatitle: 【Java JVM】 JVM与Java体系结构
date: 2023-06-26 14:21
tags:
- 行动阶段/完成
- 主题场景/程序
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/Java
categories:
- Java
keywords:
- Java
description: 【Java JVM】 JVM与Java体系结构
概述JVM 的整体结构
Java 代码执行流程
JVM 的架构模型
基于栈式架构
【Java JVM】 JVM与Java体系结构JVM:跨语言的平台
Java 是目前应用最为广泛的软件开发平台之一。随着 Java 以及 Java 社区的不断壮大 Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
作为一个平台,Java 虚拟机扮演着举足轻重的作用
Groovy、Scala、JRuby、Kotlin 等都是 Java 平台的一部分
作为灯种 ...
【MySQL】 锁
【MySQL】 锁Metadatatitle: 【MySQL】 锁
date: 2023-06-25 22:16
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 锁
概述并发事务的情况
写-写情况:即并发事务相继对相同的记录做出改动。 – 脏写
读-写或写-读情况:即一个事务进行读取操作,另一个进行改动操作。 – 脏读、不可重复读、幻读
锁结构
trx信息:代表这个锁结构是哪个事务生成的。
is_waiting :代表当前事务是否在等待。
解决并发事务带来问题的两种基本方式
读操作利用多版本并发控制( MVCC ),写操作进行加锁。
读、写操作都采用加锁的方式。
读操作
一致性读(Consistent Reads) 事务利用MVCC 进行的读取操作
锁定读(Locking Reads) 共享锁和独占锁
...
【MySQL】 事务的隔离级别与 MVCC
【MySQL】 事务的隔离级别与 MVCCMetadatatitle: 【MySQL】 事务的隔离级别与 MVCC
date: 2023-06-25 21:00
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 事务的隔离级别与 MVCC
概述并发事务问题
脏写( Dirty Write ) 如果一个事务修改了另一个未提交事务修改过的数据,那就意味着发生了脏写
脏读( Dirty Read )一个事务读到了另一个未提交事务修改过的数据
不可重复读(Non-Repeatable Read) 一个事务只能读到另一个已经提交的事务修改过的数据,并且其他事务每对该数据进行一次修改并提交后,该事务都能查询得到最新值
幻读(Phantom)一个事务先根据某些条件查询出一些记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再 ...
【MySQL】 日志 - undo
【MySQL】 日志 - undoMetadatatitle: 【MySQL】 日志 - undo
date: 2023-06-25 16:14
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 日志 - undo
概述回滚是指将已经提交的事务撤销,恢复到事务开始之前的状态。保证数据的一致性和完整性。把回滚时所需的东西都给记下来把这些为了回滚而记录的这些东东称之为撤销日志,英文名为undo log
事务id如果某个事务执行过程中对某个表执行了增、删、改操作,那么InnoDB 存储引擎就会给它分配一个独一无二的事务id在内存中维护一个全局变量,每当需要为某个事务分配一个事务id 时,就会把该变量的值当作事务id 分配给该事务,并且把该变量自增1。trx_id隐藏列
roll pointer隐藏列的含义
本质上就是一个指向记录对应 ...
【MySQL】 日志 - redo
【MySQL】 日志 - redoMetadatatitle: 【MySQL】 日志 - redo
date: 2023-06-25 10:13
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: redo日志(Redo Log)是数据库管理系统(DBMS)中的一种重要的日志类型,用于记录数据库中发生的事务操作的变化。
概述
redo日志(Redo Log)是数据库管理系统(DBMS)中的一种重要的日志类型,用于记录数据库中发生的事务操作的变化。
redo日志的主要功能是保证数据库的持久性和恢复能力。
redo 日志本质上只是记录了一下事务对数据库做了哪些修改, 在之后系统奔溃重启后可以把事务所做的任何修改都恢复出来。
type :该条redo 日志的类型。
space ID :表空间ID。
page number :页号。
data :该条r ...