看了两天资料整理出来的,希望有大佬指出错误
JVM:

类加载器:负责把.class文件加载到内存中;继承classLoader抽象类;
加载方式:双亲委派机制,由下往上进行委派,由上往下进行加载;如果没有加载到,抛出异常;
加载顺序:启动类加载器 -> 扩展类加载器 ->应用程序类加载器

运行时数据区:程序运行时的数据存储区域


程序计数器: 线程计数
本地方法栈:登记本地方法;通过本地方法接口(JNI)调用本地方法;native关键字 -> 本地方法栈 -> 本地方法接口 -> 本地方法
本地方法接口(JNI):调用本地方法,目的是融合不同语言为java所用,调用其他语言方法库
栈区:线程运行的生命周期,每一个运行过的方法为栈帧(基本单元),正在运行的方法为top,线程结束释放资源;保存八种基本数据类型、引用、实例方法;
方法区:存储静态变量(static)、常量(final)、class模板、运行时常量池
堆:存储对象和数组,包含新生区、老年区
垃圾回收机制:
垃圾标记算法:1.引用计数法 2.可达性分析法
新生区:new一个对象会进入eden区, eden没有足够空间进行一次轻GC,大对象直接进入老年区,其他存活对象进入幸存区,年龄+1,大于15的对象进入老年区;
老年区:当进入老年区的对象大小大于老年去可用连续空间,进行重GC(全局GC)
垃圾清理算法:复制算法(幸存区)、标记清除算法、标记压缩算法
jvm调优参数:-Xms1m :设置最堆初始为1m -Xmx8m :设置最大堆内存为8m
-XX:+PrintGC 每次触发GC的时候打印相关日志
-XX:+HeapDumpOnOutOfMemoryError: 在报OutOfMemoryError时堆dump
-Xss1m :设置栈大小为1m
执行引擎:分配给运行时数据区的字节码将由执行引擎执行。执行引擎读取字节码并逐段执行。

浙公网安备 33010602011771号