学习一段时间 再回头看基础 名称栈堆 方法区 有点遗忘了 再屡一遍
jvm启动时 就会创建好虚拟机 里面有 推 栈 方法区 本地方法栈
当启动线程时 首先还是老样子 加载类信息 一般没打破双亲委派 由appClassLoader 加载去找class文件
此时类装载子系统 加载完毕此线程class的文件后 执行代码逻辑
由jvm虚拟机 的栈里面 开辟一块空间 给此线程当 线程栈 (只要开启线程就从jvm里面开辟一个线程栈)
那么线程栈里面装什么呢 ?
1 执行代码某个方法就会 开辟一块区域 叫栈帧 只要调用方法就开辟 隔离性很好
————————————————————————————————》 栈帧里面有啥呢?
a 局部变量表 开始就会创建this 对象 放变量数据 a
b 操作数栈 存放数据 比如放入111 然后操作给a赋值a为111 那么在局部变量表a=111
c 动态链接 这个不好解释 首先类加载的时候 static main 是静态链接 方法名就是动态链接 因为还没启动方法 没加载 等调用方法时 方法就会加载 方法名指向方法里面的数据等信息
d 方法出口 return完后 数据信息
2 堆里面放啥呢 ?
比如new 对象 数据就放推里面 栈就存在指向推的内存地址
3 方法区呢?
放类信息 常量 静态变量 数据 也是存的指向推的内存地址