上图
jvm内存模型,虚拟的描述java操作内存的一个模型。
java跨平台:jvm将每一条指令翻译成不同平台的机器码。
类加载机制
JVM讲class字节码文件加载到内存,经过校验、准备、解析和初始化之后,得到可以被虚拟机使用的对象。
堆
线程共享,对象一般是分配在堆的。
栈
线程栈,栈帧。存放局部变量、操作数栈、动态连接、方法出口。
对象可能会分配在栈、jvm会进行对象逃逸分析、这个时候对象就有可能分配在栈中。
本地方法栈
JNI(Java本地方法)
方法区(元空间)
存放一些常量、静态变量、类元信息
程序计数器
标记指令的执行位置。
直接内存(堆外内存)
jdk1.4之后引入直接内存,避免堆和native堆来回复制数据,能提高性能。
字节码执行引擎
执行指令
类装载子系统
装载类,类的加载是从main函数开始的,使用到的时候才加载。
对象
对象头
数据
对齐填充
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。