java一个对象内存图

 

 

 

一个数组内存图

凡是new的东西都在堆里面

凡是属性都在栈里面

栈里调用主程序入口会有一个方法栈,逐层执行。

变量array就是一个地址。array(0) 是先通过array这个地址,找到堆里的位置0

 堆里会给属性附上默认值

 

一个对象内存图

 程序开始执行,首先让main方法进栈。在运行main方法时候,方法区最先有数据,有什么数据, .class的信息。

堆参考着方法区的类的属性复制一份,注意,方法在堆里存的是个地址。

 

 

 进栈也叫压栈,这个感觉像xml 所有方法是同一个xml ,根据方法名找到对应的执行。每个方法执行完毕立刻马上从栈空间消失。

两个对象,调用同一个方法的内存图。如下

注意:两个对象,new两次,new几次就在堆中出现几个对象。如果调用同一个方法,两个那么同一个方法在堆和方法区中的地址是一样的。

 两个引用,引用的是同一个对象的内存图

只需要改一行代码,二者产生联系

phone one =new One()

Phone two=one

 

 

对象当做方法入参,穿进去的其实是地址值。其实和上面一样,两个对象共用一个地址了

 对象作为返回值

 调用方法先进栈,先返回一个地址,最后再把地址给对象。对象是调用方法时候才创建的

 

posted @ 2023-09-07 17:33  每天都要进步啊  阅读(8)  评论(0编辑  收藏  举报