一、JVM 内存模型
二、栈管运行,堆管存储
三、堆内存
在JDK1.8以后永久区变为元空间,以上是JDK1.7之前的版本,堆内存可以进行优化,GC垃圾回收也存在堆内存,详细介绍看关于垃圾回收的文章。
四、程序计数器(PC Register)
程序计数器就是记录当前线程执行程序的位置,改变计数器的值来确定执行的下一条指令,比如循环、分支、方法跳转、异常处理,线程恢复都是依赖程序计数器来完成。 Java虚拟机多线程是通过线程轮流切换并分配处理器执行时间的方式实现的。为了线程切换能恢复到正确的位置,每条线程都需要一个独立的程序计数器,所以它是线程私有的。
五、本地方法栈
本地接口是为虚拟机使用到的Native 方法服务,因为需要融合不同的语言,比如c/c++等,java在内存中专门开辟了一块区域处理标记为native的代码。在Execution Engin执行时需要先加载native librarys。
六、尾巴
这笔记是根据尚硅谷周阳老师了解到的,还有一些博客上的如有错误欢迎纠正。这是基本熟悉一下JVM的内存模型,下面一篇是关于堆内存的垃圾回收机制的笔记,JVM还有好多东西需要学习。