JVM:
线程共享:方法区,堆
线程独享:栈,程序计数器;
它的内存区域有五块:堆,虚拟机栈,本地方法栈,方法区,程序计数器
程序计数器:
用来记录当前执行的字节码位置。
方法区:
放常量,静态量,常量池的地方,以及放。CLass文件;
虚拟机栈:
就是指的“栈”,存放对象引用
本地方法栈:
为JVM使用到的Naive方法提供内存空间
堆:
放对象的地方,JVM的GC就是在这里发生,3代模式;
new 一个对象时,JVM中发生了什么?
如何判定一个对象是否要GC:
GC的几种收集方法:
只在新生代区进行GC(Minor GC)和整个堆进行GC(Full GC)
类的加载:
类加载器
类加载是由类加载器完成的,总共有四种类加载器,引导加载器,拓展加载器,系统类加载器,自定义加载器;
类加载机制:
如上图,采用的是双亲委派模式:
如果一个类加载器收到了 Class 加载的请求,它首先不会自己去尝试加载这个 Class ,而是把请求委托给父加载器去完成,依次向上。因此,所有的类加载请求最终都应该被传递到顶层的启动类加载器中,只有当父加载器在它的搜索范围中没有找到所需的 Class 时,即无法完成该加载,子加载器才会尝试自己去加载该 Class 。