java程序运行流程
虚拟机栈stack: 先进后出,存放8大基本类型以及方法和变量的引用。 线程私有。
本地方法栈 native method stack:带native修饰的,调用的不是Java语言写的代码。线程私有
堆Heap: 堆中存放new出来的对象,栈中的对象引用指向堆中的对象实例。线程共享
方法区 Method Area:是一个特殊的堆,所有字段和方法字节码,以及一些特殊符号,如构造函数,接口代码也在此定义,简单说,所有定义的方法的信息都保存在该区域。 还存放static、 final 和Class的元数据(并非Class的对象,Class对象是加载的最终产品) ,运行常量池 存放在方法区中。共享区域
程序计数器: 是一个记录着当前线程所执行的字节码的行号指示器,内存很小。线程私有
常量池:
分为静态常量池和运行时常量池。
- 所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。
- 而运行时常量池,则是jvm虚拟机在