初级程序员掌握
1、JVM内存模型
1)线程数据共享:方法区(常量池)、堆
方法区:类信息(字段、方法、接口)、静态变量、常量池
堆:对象实例数据(GC管理主要啊区域)
对象的定位访问:句柄访问与直接方法
2)非线程数据共享:虚拟机栈、本地方法栈(native)、程序计数器
虚拟机栈:基本数据类型、引用变量、(每个方法从调用到执行完成的过程,对应一个栈帧在虚拟机栈中入栈到出栈的过程)
本地方法区栈:与虚拟机栈类似,虚拟机为java方法(字节码服务),本地方法栈为native方法服务
程序计数器:存储不同线程的字节码指令数
2、垃圾收集器与内存分配策略
前沿:三个问题
1)哪些内存需要回收?
虚拟机栈、本地方法啊栈、程序计数器生命周期随线程,栈中的栈帧随方法的进入退出进行入栈出栈的操作,栈帧中的内存在类结构确定下来的时候就已知,也就是在编译时期就确定了。
堆和方法区的在运行时期确定,内存动态分配,垃圾回收期关心这部分的内存。
2)什么时候回收?
3)如何回收?
3、加加载器相关