java虚拟机在执行java程序的过程中会把他所管理的内存划分为若干个不同的数据区
1:程序计数器:
是一块较小的内存空间,是代码执行的指示器。
2:java虚拟机栈
是线程私有的,用处是在执行方法会创建一个栈帧,栈指的是局部变量表。局部变量表存放了编译期可知的各种基本类型,对象引用。
3:本地方法栈
本地方法栈为虚拟机使用到的native方法服务。
4:java堆
对象创建的存放区域。
5:方法区
是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码。
6:运行时常量池
运行时常量池是方法区的一部分,class文件中除了有类的版本,字段,接口等信息,还有就是信息是常量池,用于存放编译期生成的各种字面量和符号引用。