内存结构
创建对象的内存结构:栈、堆、方法区
栈
- 基本数据类型、局部变量、对象的引用变量 都是存在栈内存里面
- 当在一段代码中定义一个变量时,Java就在栈中为这个变量分配内存空间
堆
- 程序员控制
- new 创建的实例化对象及数组,存在堆内存中
new --> 向堆申请开辟一块空间
方法区
- 方法区是Java虚拟机中的定义,是一种规范。
永久代或者元空间是它的一种实现,一个是标准,一个是实现
- 方法区存放类信息、方法信息、static变量、常量池
思维图
对象引用-->“指针”
区域与区域之间是有壁垒的,例如static中的函数不可以直接调用方法区的普通函数
如果是普通函数,调用与在static中的函数调用不一样
static 中的函数调用:
fun1();
普通函数调用,属于类:new一个类的对象,才能继续调用
Test t = new Test();
t.fun2();
- 永久代、云空间
都是方法区的一种说法,实现