方法只定义,不调用,是不会执行的,并且 JVM 也不会给该方法分配 “运行所属” 的内存空间。只有在调用这个方法的时候,才会动态的给这个方法分配所属的内存空间。
在 JVM 内存划分上有这样三块主要的内存空间(除此之外还有其他的内存空间)
- 方法区内存
- 堆内存
- 栈内存
分配内存的过程:
- 方法代码片段 属于
.class
字节码文件的一部分,字节码文件在类加载的时候,将其放到了方法区当中。所以 JVM 中的三块主要的内存空间中 方法区内存 最先存有数据,存放了代码片段 - 代码片段 虽然在 方法区内存 当中只有一份,但是可以被重复调用。每一次调用这个方法的时候,需要给该方法分配独立的活动场所,在 栈内存 中分配。【栈内存 中分配方法运行的所属内存空间】
- 方法在调用的瞬间,会给该方法分配内存空间,会在栈中发生 压栈 动作,方法执行结束后,会把该方法分配的内存空间全部释放,此时发生 弹栈 动作
- 压栈:分配内存
- 弹栈:释放内存