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
他是因为方法的加载深度的调用 把栈给撑爆了 栈帧溢出
他是一个错误 而不是异常