> 文档中心 > JVM听课随记 02 这个很重要啊

JVM听课随记 02 这个很重要啊

5、方法

5.1他存储了每一个类的结构信息

5.2 方法区是规范,在不同的虚拟机头实现是不一样的,最典型的就是永久代(PermGen space)和元空间(Metaspace)

6、Stack

6.1 栈管运行,堆管存储

有一句话:程序=算啊+数据结构 也即 程序=框架+业务逻辑

所以在数据结构 有两种你必须要懂

队列:什么叫队列 就是大家大学的时候排队打饭 或者电影院买电影票 俗称先进先出

栈:先进后出,后进先出 最金典的案例 子弹的弹夹

接下来深入

首先栈更多是的装载方法 ,那么好除了方法还有其他的东西可以放吗

小总结:

栈也叫栈内存,主管java程序的运行,是在线程创建的时候创建,他的生命周期是随着线程的生命周期;线程结束栈内存也就释放,重点:所以对于栈来说不存在垃圾回收问题,只要线程一结束该栈就结束。生命周期和线程一致,是线程私有的;8种基本类型的变量+对象的引用变量+实例方法都是在函数的栈内存中分配。

6.2 栈保存哪些东东

8种基本类型的变量+对象的引用变量+实例方法都是在函数的栈内存中分配。

Java有种东西叫方法 这种方法被扔进虚拟机的栈空间去 这个方法就变化成了栈帧

也就是 Java方法=栈帧

 举例子说明  :

一个方法就是一个子弹  子弹身上有子弹壳

那么栈帧中主要保存3种数据

本地变量:输入参数和输出参数以及方法内的变量

栈操作:记录出栈和入栈的操作

栈帧数据:包括类文件、方法等

6.3 Exception in  thread "main" java.lang.stackOverflowError 

他是因为方法的加载深度的调用 把栈给撑爆了  栈帧溢出

他是一个错误  而不是异常