深入理解jvm jdk1,7

Posted mydreamwillcometrue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解jvm jdk1,7相关的知识,希望对你有一定的参考价值。

 java 虚拟机管理的内存模型包含以下几个运行时数据区域:

技术图片

程序计数器:

程序计数器是一块较小的内存空间,它可以看成当前线程执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都要依赖这个计数器来完成。

由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间的计数器互不影响,独立储存,我们称这类内存区域为线程“私有的”内存

如果线程正在执行的是一个java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空。此内存区域是唯一一个在java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。

以上是关于深入理解jvm jdk1,7的主要内容,如果未能解决你的问题,请参考以下文章

深入理解jvm jdk1,7(19)

深入理解JVM之四:详解垃圾收集器

深入理解JVM---7种垃圾收集器

深入理解ClassLoader工作机制(jdk1.8)

《深入理解JVM——如何优化Java GC「译」》

《深入理解JVM——如何优化Java GC「译」》