Live2D

JVM基础

JVM组成部分

JVM虚拟机

运行时数据区-内存模型

线程

本地方法

方法区-原空间

程序计数器

javac Math.java

java Math.class

类装载子系统

字节码执行引擎

java运行

  1. 使用javac命令将.java文件编译成.class文件
  2. 使用java命令执行.class文件
  3. 执行时类装载子系统将类资源加载到内存模型中
  4. 字节码执行引擎运行内存数据

内存模型

当new一个对象时便会将对象放入堆中。
分为年轻代和老年代,新生代又包含Eden区和Survivor(s0+s1)区。默认内存比例为Eden:s0:s1:老年代=8:1:1:20。

当调用方法时,栈会为每个方法开辟方法独有的内存空间放入方法自身的局部变量,这块空间称为栈帧。主要存储局部变量、操作数栈、动态链接、方法出口
方法变量:方法局部变量,对象变量时会存对象在堆中的地址,方便调用
操作数栈:数据的加、减、乘、除等一些操作时,存放数据使用。操作时将数据压入压出
动态链接:存放方法的入口,调用方法时可以去方法区找
方法出口:记录调用方法时的位置,当调用方法执行完成后,主方法可以知道已经执行到哪里,并执行后续方法
方法执行完毕后会销毁所分配的内存空间,即出栈。由于java方法调用链关系,栈是先进后出

本地方法

存储本地方法,Thread类中private native void start0()方法即为本地方法。

方法区

储存常量、静态变量、类信息
当静态变量为类变量时,静态变量存储对应类在堆中的地址。
类信息是指类的.class数据信息

程序计数器

记录当前执行的代码行位置(也有些时记录即将执行的代码行位置,不同JVM有差异),执行时由字节码执行引擎更改。
当A线程执行时有更高级别的B线程执行,A线程将挂起,B线程执行完后可以通过程序计数器确认A线程应该执行的代码位置。

posted @   芜湖~起飞~  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示