JVM
文章平均质量分 91
JVM知识整理
nlw
这个作者很懒,什么都没留下…
展开
-
JVM-栈帧之局部变量表
1.栈帧的内部结构每个栈帧中存储着:局部变量表(Local Variables)操作数栈(Operand Stack)(或表达式栈)动态链接(Dynamic Linking)(或指向运行时常量池的方法引用)方法返回地址(Return Address)(或方法正常退出或者异常退出的定义)一些附加信息并行每个线程下的栈都是私有的,因此每个线程都有自己各自的栈,并且每个栈里面都有很多栈帧,栈帧的大小主要由局部变量表和操作数栈决定的2.局部变量表2.1 什么是局部变量表局部变量表也被称之原创 2021-06-08 21:01:48 · 1143 阅读 · 0 评论 -
JVM-虚拟机栈简介
1.简介1.1 虚拟机栈的出现背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的【如果设计成基于寄存器的,耦合度高,性能会有所提升,因为可以对具体的CPU架构进行优化,但是跨平台性大大降低】。它的优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。1.2 什么是Java虚拟机栈Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程在创建时都会创建一个虚拟机原创 2021-06-08 17:17:42 · 171 阅读 · 0 评论 -
JVM-运行时数据区之本地方法栈
本地方法栈1.结构图2.本地方法接口介绍2.1 使用Native Method的目的2.1.1 与Java环境外进行交互2.2.2 与操作系统进行交互3.本地方法栈3.1 本地方法栈介绍3.2 本地方法栈特点1.结构图在说本地方法栈之前先要了解一下本地方法接口2.本地方法接口介绍简单地讲,一个Native Method(本地方法)是一个Java调用非Java代码的接囗,该方法的实现并非是Java语言实现的,而是调用的别的语言所实现的,例如C语言。这个特征并非Java所特有,很多其它的编程语言都有这原创 2021-06-02 16:19:11 · 289 阅读 · 0 评论 -
JVM-运行时数据区之PC寄存器
1.运行时数据区图运行时数据区是在类加载完成后所经历的阶段,当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,执行引擎就会对类进行使用,这时就用到了运行时数据区。举例来说,类的加载过程就好像是买菜的过程,经过一系列奔波,从购买到检验,最后再送到厨房(也就是运行时数据区)。而执行引擎就是一名厨师,他会用准备好的蔬菜去进行菜品的制作。2.程序计数器(PC寄存器)官方文档网址:https://docs.oracle.com/原创 2021-06-01 20:59:05 · 153 阅读 · 0 评论 -
JVM-类加载子系统
文章目录类加载子系统1.JVM内存结构图2.什么是类加载子系统2.1 加载阶段2.1.1 类加载器ClassLoader2.2.2 类加载阶段过程2.2 链接阶段2.2.1 验证(Verify)2.2.2 准备(Prepare)2.2.3 解析(Resolve)2.3 初始化阶段3.类加载器的分类3.1 虚拟机自带的加载器3.1.1 启动类加载器3.1.2 扩展类加载器3.1.3 系统类加载器3.2 用户自定义类加载器3.2.1 什么时候需要自定义类加载器?3.2.2 如何自定义类加载器?4.双亲委派机制4原创 2021-05-30 21:56:38 · 472 阅读 · 0 评论 -
初识JVM
1.什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。2.为什么要学习JVM1.面试的需要(BATJ、TMD,PKQ原创 2021-05-30 19:22:59 · 95 阅读 · 0 评论