本帖最后由 范泰洋 于 2012-8-5 00:32 编辑
我们都知道比方Person P =new Person();
这句话是在堆内存中开辟了一个空间,并且把地址赋给栈内存中的P引用
可是我想问,栈内存和堆内存谁先加载?
还有,如果对象有方法,那方法区又在什么时候加载呢?
首先,1:一开始主函数要先进栈,因为它是程序的入口出,这时后,栈内存就会先加载主函数,同时还有一个局部变量在栈内。2:然后,Person在堆内存中开辟了空间,这时候,堆内存开始加载,把地址值赋值给局部变量P。这时候,局部变量P就指向了对象Person。你说如果对象有方法,3:那就是当对象Person调用方法的时候,然后加载非静态区的方法,开始进栈,当方法结束的时候,就弹栈了。附图如下:
|
|