方法在执行过程中 JVM分配,内存变化?

方法在执行过程中 JVM分配,内存变化?

方法只定义没有调用的话,是不会执行的,并且在JVM中也不会分配运行所属的内存空间,只有在调用时候,才会 动态 的给他分配空间

JVM内存划分

方法区内存

堆内存

栈内存

栈的数据结构

栈stack是一种数据结构,数据结构反映的事数据的存储形态

数据结构是独立的学科,不属于任何编程语言的范畴,只不过大多数语言需要数据结构。

常见的数据结构:

数组
队列
链表
二叉树
哈希表/散列表

栈执行方式:


在这里插入图片描述

方法代码片段存在哪里?内存分配

方法代码段属于xxx.class字节码文件的一部分,在进行类加载时将其放入方法区内存中,所以jvm三块空间中方法区最优先有数据 存放代码片段。

代码片段虽然是方法区的一部分,但是可以重复调用,每一次调用这个方法是,都需要给他分配一个独立的活动场所 这个场所在栈内存中分配

方法在分配的瞬间,会给该方法分配内存空间,会在栈中发生压栈动作,方法执行结束后,会给方法分配的内存空间全部释放,叫做弹栈。

​ 压栈:给方法分配内存

​ 弹栈:释放分配的内存空间

局部变量在方法体中声明,局部变量在运行阶段内存在中分配

方法调用时候 传的是值 不是局部变量 他不能直接操作其他类中的变量

栈内存存储的主要是局部变量

三块内存空间中 最频繁使用的是栈内存 最先使用的是方法区内存

​ 垃圾回收机制主要针对堆内存。

什么时候堆内存数据会变成垃圾?

当堆内存中的java对象变成垃圾数据时候

没有更多的引用指向它时候

这个对象无法访问时候 因为这个对象只能通过引用使用。

JVM执行过程

在这里插入图片描述

JVM执行过程

方法体先进入方法区内存,然后开始执行,main开始,内存分配,压入栈,然后运行到m方法,再次分配空间,压栈,执行结束 弹栈,后入先出原则,先弹出m方法 最后弹出main方法。释放空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值