JavaSE面向对象之对象内存细节(图解)05
1.6
对象内存图
一个对象,调用一个方法内存图
通过上图,我们可以理解,在栈内存中运行的方法,遵循
"
先进后出,后进先出
"
的原则。变量
p
指向堆内存中
的空间,寻找方法信息,去执行该方法。
但是,这里依然有问题存在。创建多个对象时,如果每个对象内部都保存一份方法信息,这就非常浪费内存
了,因为所有对象的方法信息都是一样的。那么如何解决这个问题呢?请看如下图解。
两个对象,调用同一方法内存图
对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样哪怕是多个对象,方法信息
只保存一份,节约内存空间。
一个引用,作为参数传递到方法中内存图
引用类型作为参数,传递的是地址值
1.7
成员变量和局部变量区别
变量根据定义
位置的不同
,我们给变量起了不同的名字。如下图所示: