目前正在研究java虚拟内存,感觉挺多东西都是一知半解的,参与了别人的文章,自己也总结了一些,理了下头绪,画了一张自己认识的内存模型图,也不知道是否完全正确。废话还是少说,先上图。
java虚拟内存总的来说并不只有图上的三大部分,只是有一些对我来说暂时无须接触,所以只大致分为三个部分来说明。
1、计数器区:该区分配的空间比较小,它的作用是存放计数器,计数器用来记录某线程当前正在执行的命令的地址值,以便在线程切换时,可以顺利地切回到原来执行的位置。每一个线程都会有一个 自己的计数器,各个线程之间的计算器是互不影响的。
2、栈区:存放线程栈帧和方法栈帧的地方,关于栈,会在后面的章节中详细研究说明。
3、堆区:主要存放new出来的对象,堆区也包含了方法区,方法区包含了常量池。这几个都会在后续章节中详细研究说明。