Jvm区域划分及主要功能
文章目录
- Jvm区域划分及主要功能
- 一.主要内存划分
- 类加载系统
- 运行时数据区
- 执行引擎
一.主要内存划分
类加载系统的主要功能是去查找和验证class文件并且去完成内存空间的分配和对象的赋值,在上篇博客中已经详细的介绍过了.
这个区域包括方法区,栈区,堆区,程序计数器,和本地方法栈.
- 方法区的主要功能是存储运行时的这个常量池,字段和方法的一些元数据,还有类的一些元数据.
- 堆区主要是去存储JJava对象的实例,我们在new一个对象的时候,new的对象都是产生在堆区的,所以堆区都是通过线程的方式来加载各种各样的方法.
- 然后就是程序计数器了,是负责保存每个线程的这个执行方法的地址.
- 本地方法区:是负责加载并运行本地native方法的.
- 栈区就是用来存放一些临时变量的引用的.
总结:
- 方法区和堆区是线程共享的内存区域,是咋们程序员能够通过编写代码来直接操作的区域;
- 而剩下的栈区,程序计数器,本地方法栈都是属于线程的隔离区,他们是完全有JVM来到调度.
主要包含即时编译器和垃圾回收器.
- 即时编译器
即时编译器主要是将字节码文件翻译成cpu指令,然后可以通过设置JVM参数来设置它的一个执行方式.
2. 垃圾回收器
垃圾回收期主要是对运行时数据区的这个数据进行回收和管理,其实就是对各种乐基回收算法的一个实现.具体有什么算法,课一参照上篇文章.