`
eric_weitm
  • 浏览: 235975 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jvm 源代码笔记 四 jvm主要功能模块

阅读更多
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缓存
前端:统计计数、类加载、编译器
控制中枢:内部的核心数据结构
分享到:
评论

相关推荐

    Java JDK 7学习笔记源代码

    《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...

    Java JDK7学习笔记-光盘

    必要时从java se api的源代码分析,了解各种语法在java se api中如何应用。对于建议练习的范例提供lab文档,以突出练习重点。此外,书中还将ide操作纳为教学内容之一,让读者能与实践相结合,提供的教学视频让读者...

    Java+JDK+7学习笔记_林信良编著.pdf

    必要时从java se api的源代码分析,了解各种语法在java se api中如何应用。对于建议练习的范例提供lab文档,以突出练习重点。此外,书中还将ide操作纳为教学内容之一,让读者能与实践相结合,提供的教学视频让读者...

    Java学习笔记

    ●从Java SE API的源代码分析,了解各种语法在Java SE API中的具体应用, ●提供练习的Lab操作文档,方便读者掌握练习重点, ●将IDE操作纳入教学内容使读者能与实践结合,提供视频教学能更清楚地帮助读者掌握操作...

    《JavaJDK7学习笔记》PDF

    资源名称:《Java JDK 7学习笔记》PDF内容简介:本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习Java时...必要时从Java SE API的源代码分 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    java笔记-帮助文档

    而JAVA不同, 他先是把自己的源代码编译成字节码(JVM语言),然后再将JVM 编译成相应的平台语言。 public class HelloWorld{ public static void main(String[] args){ System.ont.println("我的第一个JAVA程序!!")...

    java jdk8 学习笔记

    Java编译语言将Java代码编译成.class文件(只有一种形式),而C/C++语言将代码编译成01码,不同的操作系统的01码指令不同,这造成了不能跨平台,而Java将这个任务交给JVM,不同操作系统上的JVM将.class文件编译成不同...

    java8rt.jar源码-fwh-JVM:对于JVM情况

    有道云笔记 Idea开发工具 GItHub项目地址 分析: 类加载运行全过程: 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。 public class Math { public static final int ...

    net学习笔记及其他代码应用

    答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 40.接口是否可...

    java基础学习笔记 java整合技术 java工具类.rar

    1、编写源代码(写一个xx.java文件) 2、编译源代码(javac.exe编译器) 3、执行编译文件(java.exe解释器) 4、交由JVM(java虚拟机执行) 3.3:编译运行 每次代码改变后都要重新编译一下,才能有运行结果 javac ...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    必须要时从Java SE API的源代码分析,了解各种语法在Java SE API中如何应用。  《Java JDK 7学习笔记》将IDE操作纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握操作步骤。 内容简介 ...

    Java SE查阅手册.pdf

    在此基础上并阅读网上的博客,多篇博客对比互相补充,查看Java文档、Java源代码,然后经过实践,最后总结出的笔记。笔记旨在理解Java SE的知识,并构建一个比较系统化的知识结构,而不是停在知其然,而不知其所以然...

    JAVA--达内培训笔记

    5、java源代码中的main方法的定义写法。main方法是程序的入口。 public class Hello{ //一个源文件中只能有一个公开类,而且源文件的文件名与公开类的类名完全一致 public static void main(String[] args){ //...

    java学习笔记

    ●从Java SE API的源代码分析,了解各种语法在Java SE API中的具体应用, ●提供练习的Lab操作文档,方便读者掌握练习重点, ●将IDE操作纳入教学内容使读者能与实践结合,提供视频教学能更清楚地帮助读者掌握操作...

    java重量级源码-jackplay:一种JVM跟踪工具,可帮助您对应用程序行为进行故障排除

    java重量级源码什么是杰克剧? Jackplay ...下工作(至少你可以克隆源代码,自己构建)。 如果您发现它不工作,或者您想让它在其他主要 JDK 版本下工作,并且遇到问题,请告诉我,很高兴为您提供帮助。

    2023最新Java面试题面试经验笔记项目

    代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业...

    2021最新java面试合集pdf.rar

    看透springMvc源代码分析与实践.pdf 网易2021招聘笔试- 系统开发研发工程师(提前批).docx 网易2021笔试- Java 开发工程师(提前批).docx 网易2021笔试- Java 开发工程师(正式批).docx 网易2021笔试- 系统开发...

Global site tag (gtag.js) - Google Analytics