Java
一、jvm模块
-
jvm是什么?
是一用用于计算设备的规范,虚构出来的计算机,在计算机上仿真模拟各种计算机功能来实现
-
jvm 作用是什么?
java中所有类必须装载jvm中才能运行,这个装载工作有jvm装载器完成,.class类型文件能在jvm虚拟器中运行,但不能直接在系统中运行,需要jvm解释给系统,同时需要java类库,这就是人机交互,jvm作用
-
jvm内存模型
方法区(线程共享)
常量,静态变量 以及方法信息(修饰符,方法名,返回值,参数等)、类信息等
堆(线程共享)
实例对象, 内存最大的一块
栈(虚拟机栈-线程私有)
生命周期、线程结束,栈内存就释放了,主要存储 8大基本类型 + 对象饮用 + 实例方法
本地方发栈 线程隔离
主要就是Java里面 native修饰的方法,指责与虚拟机栈一样,只不过针对的是 c++曾
程序计数器 线程隔离
保存的是 jvm指令集,程序计数器总是指向下一条指令地址,生命周期与线程生命周期一样 -
类加载器都有哪些?这里只介绍java
bootstrap classloader: 引导类加载器 c++编写,用于家在java核心库,jir/lib目录下jar包,无法直接获取
Extension classloader:扩展类加载器 负责jir/lib/ext目录下jar包 或 -D java.ext dirs 制定目录下的jar包
Application classloader 系统类加载器,负责 java-classpath 或 -D java classpath制定目录下的jar包
Custom classloader 自定义类加载器 -
类加载器作用?
将class字节码加载到内存,并将这些动态数据转换成方法区运行时数据结构,然后在堆中形成这个类的class对象,作为方法区中数据访问路口
本质就是 将字节码加载到内存里面 -
java文件加载过程?
- 双亲委派