目录
3、本地方法栈 ( native method stacks)
1、程序计数器(Program Counter)
每个线程都有自己的程序计数器,用来存储即将要执行的指令。
2、java虚拟机栈 (JVM Stacks)
一个栈帧集,每个方法都有一个独立的栈帧【Frame】,栈帧的结构如下
2.1 局部变量表(Local Variable Table)
2.2 操作数栈 (Operand Stack)
2.3 动态链接 (Dynamic Linking)
举例method1中调用了method2,执行都method2();这行代码的时候,会根据一个链接去方法区找这个方法的代码块,这个链接就是动态连接。
2.4 返回值地址(return address)
上一步调用完method2可能会返回一个值,这个值的地址,就是返回值地址。
3、本地方法栈 ( native method stacks)
native方法专用内存,不可调整,系统默认
4、直接内存 (Direct Memory)
JVM可以直接访问的内核空间的内存(OS管理的内存)
5、方法区(method area)
方法区是一个逻辑概念,永久区和元空间是方法区的具体实现。和Spring中IOC与DI的关系一样。
Perm Space(永久区,在1.8以前,方法区指的就是永久区),存储字符串常量,FGC不会清理
Meta Space(1.8以后,有了元空间的概念,字符串常量存储在堆中,会触发FGC清理)
6、堆内存(heap)
新生代[用的拷贝算法]:新创建的对象存储的区域【Eden】,经过一次垃圾回收以后,放到S1,两次后到S2,多次回收后到Old区。
新生代【年轻代】空间耗尽时触发的GC叫:YGC/MinorGC -轻GC
老年代【永久代】空间耗尽时触发的GC叫:FullGC/MajorGC -重量级GC
JVM中对象的生命周期图: