概述
一、基本概念
二、图解
第一步:程序执行main()方法
1.方法区中存储Test的类信息等,静态区里也存储了已经编译过的main方法二进制编码
2.main()方法进栈(压栈),同时在栈中开辟空间,存放a,字面量(目前还没有地址引向它)。从图中栈内存中可以看见main()方法在最下面,因为它第一个进。
第二步:执行 newp Point(3, 4) 方法
1.方法区中存储Point的类信息等
2.在堆中分配空间(地址为0x0034)存储new 的Point对象,同时初始化 x,y 都为0
3.Point(3, 4)方法进栈,在栈中开辟空间,存放局部变量this,x,y。并且this指向地址0x0034.
4.堆中把Point(3, 4)对象下x,y被分别赋值为3,4
5.把0x0034赋值给 栈中main方法里的a
6.Point(3, 4)方法执行完就弹栈(出栈)。
第三步:执行 new Point(0, 0) 方法
1.与第二步一样,所以图中就没画
第四步:执行 new Line(a, b) 方法
1.与第二步一样。需要注意的是,因为Line里的里的satrt,end是引用类型变量,所以在new对象时初始 化不是 0,是null
第五步:执行 getLinrLength() 方法
三、方法区详解
如果了解方法区里 到底存放了那些,如运行时常量池,每个类自己的常量池、jvm怎么执行某段程序等详情,请跳转下面的链接,
https://www.cnblogs.com/curedfisher/p/12331537.html
最后
以上就是专注纸飞机为你收集整理的Java 中 堆,栈,方法区一、基本概念二、图解三、方法区详解的全部内容,希望文章能够帮你解决Java 中 堆,栈,方法区一、基本概念二、图解三、方法区详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复