java虚拟机在执行java程序时,会把它所管理的内存划分为若干个不同的数据区域。
数据区域:
1、程序计数器:记录执行的字节码指令。
2、java虚拟机栈:(为虚拟机执行java方法)每个方法在执行时都会创建一个栈,用于存储局部变量表,操作数栈,方法出口等信息。
3、本地方法栈:虚拟机使用native方法。
4、java堆:java虚拟机所管理的内存中最大的一块,也是所有线程共享的地块内存区域,在虚拟机启动时创建。所有的对象实例以及数组都要在堆在分配,它也是垃圾收集器管理
的主要区域。
5、方法区:存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
6、运行时常量池:Class文件中除了有类的版本,字段,方法,接口等信息外,还有一项信息是常量池。用得比较多的是String类的intern()方法。