Java内存结构的理解

79 阅读1分钟

内存结构

创建对象的内存结构:栈、堆、方法区

  • 基本数据类型、局部变量、对象的引用变量 都是存在栈内存里面
  • 当在一段代码中定义一个变量时,Java就在栈中为这个变量分配内存空间

  • 程序员控制
  • new 创建的实例化对象及数组,存在堆内存中

new --> 向堆申请开辟一块空间

方法区

  • 方法区是Java虚拟机中的定义,是一种规范

永久代或者元空间是它的一种实现,一个是标准,一个是实现

  • 方法区存放类信息、方法信息、static变量、常量池

思维图

image.png

对象引用-->“指针”

区域与区域之间是有壁垒的,例如static中的函数不可以直接调用方法区的普通函数

如果是普通函数,调用与在static中的函数调用不一样

 static 中的函数调用:
   fun1();
 普通函数调用,属于类:new一个类的对象,才能继续调用
   Test t = new Test(); 
   t.fun2();
  • 永久代、云空间

都是方法区的一种说法,实现

image.png