思维导图:
常见面试题:
JVM内存模型包括五大部门:程序计数器、虚拟机栈、本地方法栈、堆、方法区。 程序计数器:字节码行号指示器; 虚拟机栈:(1)java方法执行的内存模型;(2)栈帧用于存储局部变量表、操作数栈、方法出口、动态链接; 本地方法栈:native方法执行的内存模型; 堆:存放对象的主要实例,垃圾回收的主要区域; 方法区:类信息、常量信息、静态变量;
堆内存主要分为新生代、老年代; 新生代占堆内存的1/3; 新生代分为Eden、From、To;占比分别为:8:1:1 老年代占堆内存的2/3;
判断对象是否可以回收的算法:可达性算法、引用计数法; 引用计数法无法解决对象循环依赖的问题; 都用可达性算法判断对象是否可以回收;
垃圾回收算法有: 标记清除:1. 会产生内存碎片; 复制:1. 多为新生代使用;2. 对象存活率较高时,效率变低; 标记整理:1. 老年代常用;2. 将对象统一移动到一边;