jvm 源代码笔记 四 jvm主要功能模块
2013-03-25 15:31
197 查看
jvm主要功能模块
hotspot/src/share/vm/runtime/init.cpp line:90 init_globals()
HandleMark:为线程做标记,便于删除相应范围的handle
1、management_init(主要是进行各种计数的处理) 管理内存、线程、垃圾回收等,内部初始化了 线程服务、运行时服务、类加载服务
2、bytecodes_init 建立好字节码相关的表结构,便于后面利用查表实现相应的逻辑
3、classLoader_init 统计class,维护classpath、class与字节码等之间的映射关系
4、codeCache_init(); 缓冲代码
5、VM_Version_init(); 设置 主、次版本号、 设置build数等
6、stubRoutines_init1(); 便于c中调用java的代码(编译成汇编的形式)
7、jint status = universe_init(); 建立代码缓存和代码加载相关的表格
8、interpreter_init(); 每个字节码、程序和函数的调用都要进行计数,compiler将 java文件变成class文件,
interpreter处理class文件
9、invocationCounter_init(); 调用计数
10、templateTable_init();
每个字节码对应有相应的汇编指令,这个结构封装成template,所有字节码的template封装成templateTable,
里面包含每个字节码指令的具体机器码映射,如 invokedynamic
11、SharedRuntime::generate_stubs();
SharedRuntime运行时中平台独立的那些组件,生成功能性的代码块,如 解析函数调用、返回结构、出错处理 各种handler
12、universe2_init(); 支持catch 和堆(heap)内存验证
13、referenceProcessor_init(); 引用计数和handle初始化,便于GC的实现
14、jni_handles_init(); 借助 SystemDictionary和符号表等 实现handle的映射管理
15 vmStructs_init(); vmStructs.cpp 中定义了jvm内部使用的所有的数据结构
16 vtableStubs_init(); VtableStub 索引和表项的结构,表项内的数据是代码 的stub
17 InlineCacheBuffer_init(); 代码缓冲区
18 compilerOracle_init(); oracle的编译器
19 compilationPolicy_init(); 指定使用哪个编译器 以及如何进行编译
20 VMRegImpl::set_regName(); 设置好名字,便于汇编代码的生成
21 universe_post_init() 初始化部件后的逻辑操作,包括 加载 异常等基础类、构建报错信息、安全检查、加载器、引用管理等
22 javaClasses_init(); 处理和检查
class文件中数据的offset,以便在执行时进行有效的连接(有对invokedynamic的支持)
23 stubRoutines_init2(); 再一次初始化(桩stub)信息
概括
后端:字节码的映射、表结构、汇编生成;stub的管理;解释器的JIT缓存
前端:统计计数、类加载、编译器
控制中枢:内部的核心数据结构
hotspot/src/share/vm/runtime/init.cpp line:90 init_globals()
HandleMark:为线程做标记,便于删除相应范围的handle
1、management_init(主要是进行各种计数的处理) 管理内存、线程、垃圾回收等,内部初始化了 线程服务、运行时服务、类加载服务
2、bytecodes_init 建立好字节码相关的表结构,便于后面利用查表实现相应的逻辑
3、classLoader_init 统计class,维护classpath、class与字节码等之间的映射关系
4、codeCache_init(); 缓冲代码
5、VM_Version_init(); 设置 主、次版本号、 设置build数等
6、stubRoutines_init1(); 便于c中调用java的代码(编译成汇编的形式)
7、jint status = universe_init(); 建立代码缓存和代码加载相关的表格
8、interpreter_init(); 每个字节码、程序和函数的调用都要进行计数,compiler将 java文件变成class文件,
interpreter处理class文件
9、invocationCounter_init(); 调用计数
10、templateTable_init();
每个字节码对应有相应的汇编指令,这个结构封装成template,所有字节码的template封装成templateTable,
里面包含每个字节码指令的具体机器码映射,如 invokedynamic
11、SharedRuntime::generate_stubs();
SharedRuntime运行时中平台独立的那些组件,生成功能性的代码块,如 解析函数调用、返回结构、出错处理 各种handler
12、universe2_init(); 支持catch 和堆(heap)内存验证
13、referenceProcessor_init(); 引用计数和handle初始化,便于GC的实现
14、jni_handles_init(); 借助 SystemDictionary和符号表等 实现handle的映射管理
15 vmStructs_init(); vmStructs.cpp 中定义了jvm内部使用的所有的数据结构
16 vtableStubs_init(); VtableStub 索引和表项的结构,表项内的数据是代码 的stub
17 InlineCacheBuffer_init(); 代码缓冲区
18 compilerOracle_init(); oracle的编译器
19 compilationPolicy_init(); 指定使用哪个编译器 以及如何进行编译
20 VMRegImpl::set_regName(); 设置好名字,便于汇编代码的生成
21 universe_post_init() 初始化部件后的逻辑操作,包括 加载 异常等基础类、构建报错信息、安全检查、加载器、引用管理等
22 javaClasses_init(); 处理和检查
class文件中数据的offset,以便在执行时进行有效的连接(有对invokedynamic的支持)
23 stubRoutines_init2(); 再一次初始化(桩stub)信息
概括
后端:字节码的映射、表结构、汇编生成;stub的管理;解释器的JIT缓存
前端:统计计数、类加载、编译器
控制中枢:内部的核心数据结构
相关文章推荐
- 微软企业库4.1学习笔记(四)主要的功能模块简介
- 微软企业库4.1学习笔记(四)主要的功能模块简介
- 微软企业库4.1学习笔记(四)主要的功能模块简介
- 微软企业库4.1学习笔记(四)主要的功能模块简介
- 微软企业库4.1学习笔记(四)主要的功能模块简介
- CRM主要功能模块信息
- 解析PHP留言本模块主要功能的函数说明(代码可实现)
- MapReduce(三): MapReduce的主要功能模块
- 兼容IE的锁屏功能模块,主要是解决ie也能兼容的问题
- OpenCV(一) 主要模块及结构功能简述
- Centos6.3下Puppet功能模块实例笔记
- 详解通过源码解析Node.js中cluster模块的主要功能实现
- 51单片机功能模块学习笔记 — 数码管
- 第四课时:PowerDesigner15主要功能模块 推荐
- 商业网站常用的主要功能模块说明
- 网上图书商城项目学习笔记-003系统功能模块分析
- 企业管理平台开发项目(开源)功能模块 dll 基准源代码
- OpenCv学习笔记(一)--OpenCv所涉及的主要模块的简述
- 微擎使用 manifest.xml 来描述模块的主要功能和配置参数
- Discuz!NT代码阅读笔记(5)--从全局看看:各个模块功能摘要