JVM
1.Jvm组成

- 类加载器:将.class文件加载到内存
- 方法区: 存储已被虚拟机加载的类信息、常量、静态变量,以及编译之后的代码缓存...
- 栈空间: 虚拟机栈,存储基本数据类型(作为局部变量的时候)、动态链接(引用)、方法出口...
- 本地方法栈: Java与操作系统底层或硬件交互 Native本地方法服务,调用非java语言
- 堆空间: 存放实例对象、数组
- 永久区: 运行环境必须的类信息 不会被垃圾回收掉
- 新生区:包括 伊甸区(新创建的对象) 幸存者区(筛选长寿目标)
- 老年代:存储长期生活的对象
- 程序计数器: 每个线程都有一个程序计数器,就是一个指针,指向方法区中的方法字节码(用来存储下一条将要执行的字节码指令的地址),记录程序执行位置
2.对象创建的过程

3.堆内存如何分配
- 指针碰撞
- 适用于管理简单、碎片化较少的内存区域,如年轻代
- 在分配内存时,Java 虚拟机会维护一个指针,指向下一个可用的内存地址,每次分配内存时,只需要将指针向后移动一段距离,如果没有发生碰撞,就将这段内存分配给对象实例。
- 空闲列表
- 适用于内存碎片化较严重或对象大小差异较大的场景,如老年代
- JVM 维护一个列表,记录堆中所有未占用的内存块并记录大小和地址信息。当有新的对象请求内存时,JVM 会遍历空闲列表,寻找足够大的空间来存放新对象。
4.JVM怎么访问对象
posted @
2025-08-16 13:59
Charon-YC
阅读(
12)
评论()
收藏
举报