声明,本文为从看视频课程的过程中记录的学习笔记,内容是自己敲出来的,不过非完全原创
如图所示为jvm内存模型的结构
主要分为五部分
堆,栈,本地方法栈,程序计数器,方法区
堆和栈不用细说了
本地方法栈主要做的是存储cpp的native方法运行的时候的栈区
程序计数器指向程序中运行的位置
方法区主要存储一些静态方法或者变量
左边的栈,本地方法栈以及程序计数器是线程私有的,线程私有的意思是每创建一个线程,他都要自己创建这么一个玩意
堆区和方法区是全局共享的
如图是一个程序执行过程中堆栈内部的细节,其中在函数执行完之后栈内部的空间会自动进行销毁,那堆中的空间怎么办呢?
这就要用到了gc
其实不难发现jvm的虚拟机和计算机内部的执行过程都相似,只不过是模拟了一遍运行,都有通用性