JUC、JVM八股补充

元空间中存的什么信息

元空间里存的不是普通对象(对象在堆里),而是类的元数据。

  • 类的结构信息

    • 类名、父类名、接口列表

    • 字段(Field)描述(名字、类型、修饰符)

    • 方法(Method)描述(名字、参数类型、返回值类型、修饰符)

    • 方法字节码指令(存储在 Method 的 Code 区)

  • 运行时常量池(部分信息)

    • 类文件里的常量池(符号引用:类名、方法名、字段名等),被加载进来后存放在方法区(元空间管辖)---符号引用就是字符串式的"说明书" ,例如 "java/lang/String.length:()I",告诉 JVM 要访问哪个类的哪个方法/字段 ;只有到运行时,JVM 才会把它解析成真实的内存指针(直接引用)
  • 类加载器相关信息

    • 哪个 ClassLoader 加载的

    • 用于类卸载时判断(类卸载必须 ClassLoader 不再被引用)

  • 方法元信息

    • 方法签名、方法参数表、局部变量表(符号层级,不是实际栈帧)

    • JIT 编译优化后的信息(如内联缓存)

线程和进程区别:

  • 进程(Process):操作系统为一个程序运行分配的基本单位,是资源分配的最小单位。它拥有自己独立的内存空间(代码段、数据段、堆、栈)、文件句柄、网络连接等资源。

  • 线程(Thread):进程中的执行单元,是 CPU 调度的最小单位。多个线程共享所在进程的资源(内存、文件等),但每个线程有自己的程序计数器、栈、寄存器等。(

  • 线程没有独占的物理寄存器

  • 线程上下文 里会保存一份 寄存器的内容快照。(相当于线程中存了一份寄存器的副本信息,当切换到当前线程,会将副本信息加载到cpu寄存器中)

相关推荐
luj_176811 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
我命由我1234511 小时前
Android Studio - Android Studio 自定义预览尺寸
android·java·ide·java-ee·android studio·android-studio·android runtime
不听话坏11 小时前
Ignition篇(下 一) 动态执行前的事情
开发语言·前端·javascript
likeyi0711 小时前
require 和 import的区别
开发语言·前端
咖啡八杯12 小时前
GoF设计模式——迭代器模式
java·后端·设计模式·迭代器模式
远离UE412 小时前
UE5 compute shader 原子加
开发语言·c++·ue5
C+-C资深大佬12 小时前
C++ 显式类型转换详解:static_cast、dynamic_cast、const_cast、reinterpret_cast
开发语言·c++
AIGS00112 小时前
企业AI落地的关键认知:向量空间JBoltAI的本体语义平台
java·人工智能·人工智能ai大模型应用
KaMeidebaby13 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
luj_176813 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法