java.jvm中的内存分配

方法执行过程中,在jvm中的内存是如何分配的?

1.方法只定义不调用,是不会执行的,并且在jvm中不会给其分配"运行"的内存空间

2.在jvm中内存划分为主要的三块(当然还有其它的内存空间):
方法区内存
堆内区
栈内区

3.关于栈数据结构:
-栈:satck,一种数据结构
-数据结构反应的是数据的存储形态
-数据结构是独立的学科,并不属于任何语言的范畴只不过在大多数编程语言中要使用数据结构
-作为程序员需要精通:数据结构+算法
-常见的数据结构:

数组

列队
链表
二叉树
散列表/哈希表
. . . . . . . .

4.方法执行的时候方法代码片段存储在哪里?内存在那里分配?
方法代码片段属于 .class字节码文件的一部分,字节码文件在加载的时候,将其放入了方法区内存,所以jvm中的方法区内存最先有存储的数据,存放了代码片段
代码片段虽然在方法区内存中只有一份。但是可以被重复调用,每一次调用这个方法的时候,都需要给该方法分配一个独立的活动场所,在栈中分配。
5.方法在调用的瞬间,会给该方法分配内存空间,会在栈中发生压栈动作,当程序运行结束的时候,会释放该方法分配的内存空间,发生弹栈动作:
压栈:给方法分配内存
弹栈:释放该方法的内存空间

6.局部变量在"方法体"中声明,局部变量运行时内存空间在栈中分配

图示:
java.jvm中的内存分配