类加载器
分为,应用程序加载器,扩展类加载器,根加载器,jvm自带加载器
类的加载过程为双亲委派机制:如果加载一个类,他会首先找应用程序加载器->扩展类加载器->根加载器一层一层的加载,如果有则加载没有在加载自己的,这样可以保证安全
打破双亲委派机制:自定义一个ClassLoader并重写loadClass方法,如spi,数据库我们提供接口,数据库厂商提供实现
寄存器
每个线程都有一个程序计数器,线程私有
本地方法栈
native关键字修饰,就是Java达不到的,如thread中的start方法,Java基本不怎么操作硬件等,所以需要c,c++的库调用本地方法接口JNI,会在内存中开辟一块区域为native method stack 最终去加载本地方法库
栈
栈内存,主管程序运行,生命周期和线程同步,线程结束,栈释放,不存在垃圾回收
存放:八大基础类型+对象引用+实列的方法
方法区
线程共享的,存储,final,static,Class,常量池
堆
对象实例,数组
new关键字的时候我们需要做什么