在学习JVM之前我们需要明确的是,我们所学习的是JVM的一个规范,在实际中有很多不同种类的虚拟机来实现这一种规范。其次JVM运行时数据区和JMM的区别我们要搞清楚,不能将JMM理解为JVM运行是数据区。本篇只意在使读者对JVM运行时数据区有一个整体的了解,并没有深入细节的探讨,这样在阅读其他资料的时候心中有一个整体的印象。
JVM分为三大部分:类加载子系统、运行时数据区、执行引擎。其中我们要讲的JVM运行时数据区又包括以下的内容,其中红色代表的是共享数据区,而绿色代表的是线程私有的数据区。我们在进行JVM的调优的时候就是控制红色部分的共享数据区,线程私有部分是我们无法控制的它是由JVM自动维护的。
现在我们来深入了解一下线程私有的部分,如下图所示:
在栈中我们可以看到当前栈帧,这实际上是只要调用一个方法就会形成一个栈帧,所以可以理解的是栈中存放的当前执行方法的私有数据。当方法返回的时候这一栈帧就会弹出。如果结合上面两幅图的话,看起来更像是这样: