• 声明对象Person p;


对象的内存模型


  • 创建对象p=new Person();


对象的内存模型

  • 栈内存:在方法中定义的变量(基本类型和引用类型)。超过变量的作用域时,自动释放变量的内存。


  • 堆内存:new创建的对象(包括数组),由Java的自动垃圾收集机制来清除


栈内存与内存的区别:


栈stack——连续的内存区域,大小固定编译时确定所需空间大小,效率高

堆heap——不连续的内存区域,运行时确定所需空间大小(支持面向对象的多态性,如:运行时才能确定是哪个类的对象),效率低,但灵活


附:

虚拟机内存结构:

对象的内存模型

类文件:java文件编译后产生的字节码文件

类加载器:虚拟机调用类加载到虚拟机的内存里面

方法区:存类信息(类名、类修饰符、类属性及属性的数量、方法)、常量池、静态数据。

:存基本数据类型、引用数据类型的变量名、引用类型的对象、局部变量

:存产生的真实对象、数组、动态分布内存

本地方法栈:提供本地方法调用

程序计数器:控制程序指令线程

执行引擎:内存中调用数据信息

本地方法接口:调用本地方法栈、调用本地方法库。