首页 > 代码库 > Java虚拟机之Java内存区域

Java虚拟机之Java内存区域

Java虚拟机运行时数据区域

 

⑴背景:对于c/c++来说程序员来说,需要经常去关心内存运行情况,但对于Java程序员,只需要在必要时关心内存运行情况,这是因为在Java虚拟机自动内存管理机制的帮助下,不再Java程序员需要为每一个新生成对象去释放资源,这些事情都将交由Java虚拟机去做,但为什么我们还需要学习Java虚拟机呢?这是因为Java程序员吧内存控制权交给Java虚拟机之后一旦出现了内存泄漏和溢出,不了解Java虚拟机的内存运行,排查将会非常困难。

技术分享

                      Java虚拟机运行时数据区

Java虚拟机的多线程通过线程轮换并分配处理器执行时间的方式来实现,任何一个确定时刻,一个处理器都只会执行一条线程中的指令。因此,为了时线程切换后能恢复到正确执行位置,每条线程都需要一个独立的程序计数器,线程之前有独立存储互不影响。

 

⑵程序计数器:程序计数器是一块较小的内存空间,字节码解释器工作时,通过改变计数器值选择下一条需要执行的字节码指令(分支、循环、跳转、异常处理、线程恢复都用到了程序计数器)。

 

Java虚拟机的栈:

 

Java虚拟机之Java内存区域