1、什么是jvm:
虚拟出来的计算机,是jre的一部分,使用jvm是为了支持与操作系统无关,实现跨平台,jvm内部体系结构主要分为三个部分:类加载器子系统,运行时数据区和执行引擎。
2、jvm内存区域
运行时数据区
3、jvm内存模型
根据Java虚拟机规范,JVM将内存划分为:
- New(年轻代)
- Tenured(年老代)
- 永久代(Perm)
其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。
- 年轻代(New):年轻代用来存放JVM刚分配的Java对象
- 年老代(Tenured):年轻代中经过垃圾回收没有回收掉的对象将被Copy到年老代
- 永久代(Perm):永久代存放Class、Method元信息,其大小跟项目的规模、类、方法的量有关,一般设置为128M就足够,设置原则是预留30%的空间。
4、垃圾回收算法
- 标记-清除算法(CMS年轻代)
- 复制算法(CMS年轻代)
- 标记-整理算法(CMS老年代)
查看内存工具
jconsole
jvisualvm
jmap
jstatus
https://cloud.tencent.com/developer/article/1346963
参见:https://www.zhihu.com/question/347865136/answer/836112517
jvm:内存模型、内存分配及GC垃圾回收机制 - 掘金juejin.im