JVM虚拟机内存模型
堆、栈、本地方法栈、方法区、程序计数器之间的关系
只要有一个线程开始运行,Java虚拟机就会给他在线程栈挖一块自己专属的内存空间,
程序计数器是每一个线程都有的,程序开始运行的时候就会挖出一个属于他的空间,程序计数器的作用:记录当前的程序运行到这一个行的地址,当线程被其他的线程抢占cpu之后恢复运行的时候,根据这个记录来继续运行
对象实际是放在堆区中,而对象在栈的局部变量表存放的是在堆中的地址
静态变量也是放在堆区中的,方法区存放的也是在堆中的地址
本地方法栈是存放 jvm底层一些由C或C++语言实现的方法的地方
可达性分析算法:将“GC Roots” 对象作为起点,从这些节点开始向下搜索引用的对象,找到的对象都标记为非垃圾对象,其余的未标记的对象都是垃圾对象。
GC Roots根节点:线程栈的本地变量,静态变量,本地方法栈的变量等等