随笔分类 -  JVM

摘要:方法区 🔥🔥🔥 方法区使用的是本地内存(物理上的内存) 方法区在JDK 8以后就被称为元空间,元空间使用的就是本地内存(直接内存) 1. 栈、堆、方法区的交互关系 也叫栈、堆、方法区的配合关系 1.1 运行时数据区结构图 从线程共享与否的角度来看运行时数据区,可以作如下划分: 元空间除动态加载 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(16) 评论(0) 推荐(0) 编辑
摘要:堆 🔥🔥🔥 堆空间是运行时数据区中最大的一部分区域,但不是绝对的,因为堆空间大小是可以设置的。 1. 堆的核心概述 一个Java程序对应一个JVM实例,一个JVM实例对应一个进程,一个进程对应多个线程,一个进程中的多个线程共享【多个线程共享就会出现线程安全问题】同一个堆和方法区,每个线程各自拥 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(21) 评论(0) 推荐(0) 编辑
摘要:本地方法栈 Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。 本地方法栈,也是线程私有的。 允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的) ➢如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一一个stackoverf 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(4) 评论(0) 推荐(0) 编辑
摘要:本地方法接口(JNI) 1. 什么是本地方法? 简单地讲,一个Native Method就是-一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C【以C为代表的本地方法】。这个特征并非Java所特有,很多其它的编程语言都 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(6) 评论(0) 推荐(0) 编辑
摘要:虚拟机栈(Java栈)🔥🔥🔥 1. 虚拟机栈概述 1.1 虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的【基于栈的指令集架构】。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(27) 评论(0) 推荐(0) 编辑
摘要:程序计数器(PC寄存器) 1. PC Register 介绍 ​ JVM中的程序计数寄存器(Program Counter Register) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。 ​ 这里,并非是广义上所指的物理寄存 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(13) 评论(0) 推荐(0) 编辑
摘要:运行时数据区概述及线程 1. 概述 经过类加载器子系统之后,方法区中就保存了运行时类本身。 ​ 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(7) 评论(0) 推荐(0) 编辑
摘要:类加载器子系统 1. 内存结构概述 如果自己手写一个Java虚拟机的话,主要考虑哪些结构呢? 类加载器和执行引擎 2. 类的加载器及类加载过程 2.1 类加载器子系统的作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(5) 评论(0) 推荐(0) 编辑
摘要:JVM与Java体系结构 1. 前言 JVM拥有当前最前沿、最成熟的垃圾回收算法 JIT:即时编译器 AOT:提前编译器 JVM:代码托管技术 拓展: 前端编译器:负责把Java文件编译成Class文件,如Sun的Javac; 后端运行期编译器(JIT编译器):负责把Class文件的字节码转换成机器 阅读全文
posted @ 2024-02-29 19:33 刘二水 阅读(22) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示