JVM的内存区域划分
一、运行时数据区包含哪几部分
堆内存
使用NEW关键字创建的对象,都保存在堆内存中。这块内存不需要我们关心,会由垃圾回收器进行控制。
堆内存被所有线程共享,并且在JVM中只有一个。
另外,数组也存放在堆内存中。
Java栈
用于保存方法的临时变量,对象引用。
方法区
用于存储已被虚拟机加载的类信息、常量、静态变量等数据。
在方法区中有一个非常重要的部分就是常量池,比如字符串常量池。
本地方法栈
本地方法栈则是为虚拟机使用到的Native方法服务。而JAVA的栈内存是为了保存我们编写的临时变量与对象引用。
程序计数器
JAVA其实说到底也就是一条一条的指令。程序计数器个人理解也就是用来指示执行哪条指令的。每个线程都需要有自己独立的程序计数器,并且不能互相被干扰,否则就会影响到程序的正常执行次序。因此,可以这么说,程序计数器是每个线程所私有的。
参考文章地址:海子,http://www.cnblogs.com/dolphin0520/
纯洁的微笑,jvm系列(二):JVM内存结构