一:内存
为什么需要内存?
程序可以简化为:数据 + 逻辑;
硬盘:存储数据。
cpu:执行逻辑;
但是硬盘的速度远远跟不上cpu的速度,因此在它们之间增加了一层速度介于cpu与硬盘的存储介质,即内存;
另外内存的速度与cpu也不在同一个量级,为此cpu与内存之间还有一个中间存储层:高速缓存;
为什么需要jvm内存
内存的分配和回收是由os内核管理,这种操作代价高昂,频繁的申请和回收会性能严重下降。jvm为了提高性能以及内存的可控性,一次性从os内核申请足够多的内存,长期使用,“永”不回收至到jvm退出;也就是说:内核一次分配,长期占有,自己管理;类似内存池。同时:jvm自动管理内存的分配和回收,解放开发人员对内存的手工管理。
二:JVM内存模型
上图包含了整个jvm概念模型中的主要组件;虚线部分为jvm内存模型。
内存模型中包含了很多组件,时间长了总会忘记。实际上任何一个事物的存在都有它存在理由,只要理解了其中的原理,通过推理就可以轻松记忆。
- 方法区
编写的java代码最终需要加载到计算机中进行执行运算。class会首先加载到内存,并存储在“方法区”,以供cpu调用执行。
- 栈
jvm执行是通过调用一个