JavaSE面向对象之对象内存细节(图解)05

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

相关文章: