JAVA-内存解析

  • 实例化的对象再堆内存,为什么位于堆内存?

       答:因为堆内存是动态分配内存的,只有在运行当中,才会new一个对象放在堆内存当中,堆内存较大

  • 局部变量分配在什么地方?

       答:再栈上

  • 构造方法前面没有返回值,void也没有

  • 方法调用结束之后,为方法分配的所有局部变量全部消失

  • 方法开始执行,才开始分配内存空间

  • 形参和局部变量相同,都占一块内存

  • 调用构造函数时,构造函数中的参数首先再栈上个生成一块内存,实例化之后,会再堆上面生成一块内存空间给实例化的对象,对象内部会有一小块一小块内存,用来存储通过构造函数传进来的参数,实例化结束,栈上面的用来存储参数的内存消失,再堆上留下已经赋值好的对象,再实例化的时候,会有对象名,对象名再栈上,存放着堆上相对应对象的地址,指向堆中的地址

  • 传参数进来都不会改变堆中内存中的数据,如果方法中调用了实例化类中的属性重新赋值,才会改变内存中的数据

  • 如果再main函数中调用的方法中,写实例化类,那么main函数调用完该方法之后,栈中的方法名所在的内存空间便会消失,堆中的对象空间也会消失,不过需要根据垃圾回收的时间。

发布了108 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lclcsdnblink/article/details/101941303
今日推荐