Java连载28-内存分析
2019-09-17 10:19:57来源:博客园 阅读 ()
一、方法在执行过程中是如何分配内存的,内存是如何变化的?
1.方法只定义,不调用,是不会执行的,并且在JVM中也不会给该方法分配”运行所属“的内存空间,只有在调用这个方法的时候,才会动态的给这个方法分配所属的内存空间。
2.在JVM内存划分上有这样三个主要的内存空间(当然除了这三块之外还有其他的内存空间);
(1)方法区内存;(2)堆内存;(3)栈内存;
3.关于栈数据结构:
(1)栈:stack,是一种数据结构
(2)数据结构反应的是数据的存储形态。
(3)数据结构是独立的学科,不属于任何编程语言的范畴,只不过在大多数编程语言中要使用数据结构。
(4)常见的数据结构:数组、队列、栈、链表、二叉树、哈希表/散列表
(5)Java在不精通数据结构和算法的前提下,也可以进行开发,因为java拥有强大的库
栈:
(1)栈帧永远指向栈顶元素
(2)栈顶元素处于活跃状态,其他元素静止
(3)术语:
压栈/入栈/push
弹栈/出栈/pop
(4)栈数据结构存储数据的特点是:先进后出,后进先出
4.方法代码片段存储在哪里?方法执行的时候执行过程中的内存是在哪里分配的?
(1)方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候,将其放到了方法区之中,所以JVM中的三块主要的内存空间中方法区内存最先由数据,存放了代码片段
(2)代码片段虽然在方法区内存中只有一份,但是可以被重复调用,每一次调用这个方法的时候,需要给该方法分配独立的活动场所,在栈内存中分配。(栈内存中分配方法运行的所属内存空间)
5.方法在调用的手,会给该方法分配独立的内存空间,在栈中分配,此时发生压栈动作,方法执行结束之后,给该方法分配的内存空间全部释放,此时发生弹栈动作。
压栈是给该方法分配内存
弹栈是给该方法释放内存空间
6.局部变量在“方法体”中声明,局部变量运行阶段内存中在栈中分配。
二、源码:
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料
原文链接:https://www.cnblogs.com/ruigege0000/p/11495201.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:为什么我建议你去阅读优秀的源码
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash