jvm
1. JVM 内存模型
线程独占:
- 栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变量表存放的是 8大基础类型加上一个应用类型,所以还是一个指向地址的指针。
- 本地方法栈:主要为 Native 方法服务
- 程序计数器:记录当前线程执行的行号,执行Native 方法时 , 程序计数器为空 .
线程共享:
- 堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配。当堆没有可用空间时 , 会抛出 OOM 异常 . 根据对象的存活周期不同 ,JVM 把对象进行分代管理 , 由垃圾回收器进行垃圾的回收管理
- 方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数据。1.7的永久代和 1.8 的元空间都是方法区的一种实现
大约 18 分钟