9.2 对象内存图

9.2.1 一个对象,调用一个方法内存图

通过上图,我们可以理解,在栈内存中运行的方法,遵循”先进后出,后进先出”的原则。变量p指向堆内存中的空间,寻找方法信息,去执行该方法。

但是,这里依然有问题存在。创建多个对象时,如果每个对象内部都保存一份方法信息,这就非常浪费内存了,因为所有对象的方法信息都是一样的。那么如何解决这个问题呢?请看如下图解。

9.2.2 两个对象,调用同一方法内存图

对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样哪怕是多个对象,方法信息只保存一份,节约内存空间。

9.2.3 一个引用,作为参数传递到方法中内存图

引用类型作为参数,传递的是地址值。