一、方法区
方法区:Method Area
方法区是被所有线程共享,所有字段、方法字节码,以及一些特殊的方法,如构造函数,接口代码也在此定义,简单说:所有定义的方法信息都保存在该区域,此区域属于共享区域。
静态变量、常量、类信息(构造方法、接口定义)、运行时的常量存在方法区中,但是实例变量存在堆内存中,和方法区无关。总结:
static、final、class、常量池
二、栈区
程序 =数据结构 + 算法(持续学习)
市面上开发人员编写程序=框架 + 业务逻辑
栈 :
特点 先进后出
栈内存,主管程序的运行,生命周期和线程同步, 线程结束,栈内存也就释放了,对于栈来说不存在垃圾回收问题,一旦线程结束,栈就Over了
弹栈:从栈区 取元素
压栈:将元素存入栈中
比如,程序首先会执行main方法,将main() 方法压入栈底,将要执行的方法,按顺序压栈,执行完一个方法就弹出栈区。
2.1 栈里面都存放哪些数据
栈:八大基本数据类型,对象的引用,实例的方法
2.2 栈运行的原理
栈帧:
栈满了:StackOverflowError