JVM 源代码笔记 一
来源:互联网 发布:52java手机游戏破解网 编辑:程序博客网 时间:2024/04/26 21:09
现在JIT很火,据说有的LUA jit的速度与C编译出的程序的速度是相当的,毕竟这方面做的比较早的比较有成果的还是jvm,网上搜了一下,系统分析JVM代码的资料是少的可怜,干脆,我就花点功夫去做个开拓者吧。以下所有分析基于最新jvm 的实现 jdk7的源代码,下载地址如下 http://download.java.net/openjdk/jdk7/ 我所使用的源代码的版本是 openjdk-7 build143 。
一、hotspot 入口 openjdk-7-ea-src-b142-12_may_2011\openjdk\hotspot\src\share\tools\launcher\java.c
1、SelectVersion:选择版本,主要依据是宏定义,命令行输入和manifest文件
2、CreateExecutionEnvironment (java_md.c中)
2.1 GetJREPath 可以参考windows里面的获取绝对路径的api GetModuleFileName和访问注册表的api RegQueryValueEx等
2.2 EnsureJreInstallation 验证硬件平台、ms 的crt、加载crt和jkernal.dll,调用jkernal.dll中的preJVMStart()
2.3 ReadKnownVMs
3、LoadJavaVM
4、SetClassPath
5、ParseArguments
6、SetJavaCommandLineProp
7、setXXX
8、ContinueInNewThread ---------线程内的函数是 JavaMain
8.1 _beginthreadex
8.2 AWTPreload(D3D_PRELOAD_FUNC)
8.3 WaitForSingleObject(thread_handle, INFINITE);
GetExitCodeThread(thread_handle, &rslt);
CloseHandle(thread_handle);
splash screen: 闪屏,程序初始化时为了提供好的界面所提前显示的界面
二、主要入口函数 JavaMain()
1、InitializeJVM
2、LoadMainClass
3、CallStaticVoidMethod
java.dll 对应 E:\jdk7\openjdk-7-ea-src-b142-12_may_2011\openjdk\jdk\src中的代码
一、hotspot 入口 openjdk-7-ea-src-b142-12_may_2011\openjdk\hotspot\src\share\tools\launcher\java.c
1、SelectVersion:选择版本,主要依据是宏定义,命令行输入和manifest文件
2、CreateExecutionEnvironment (java_md.c中)
2.1 GetJREPath 可以参考windows里面的获取绝对路径的api GetModuleFileName和访问注册表的api RegQueryValueEx等
2.2 EnsureJreInstallation 验证硬件平台、ms 的crt、加载crt和jkernal.dll,调用jkernal.dll中的preJVMStart()
2.3 ReadKnownVMs
3、LoadJavaVM
4、SetClassPath
5、ParseArguments
6、SetJavaCommandLineProp
7、setXXX
8、ContinueInNewThread ---------线程内的函数是 JavaMain
8.1 _beginthreadex
8.2 AWTPreload(D3D_PRELOAD_FUNC)
8.3 WaitForSingleObject(thread_handle, INFINITE);
GetExitCodeThread(thread_handle, &rslt);
CloseHandle(thread_handle);
splash screen: 闪屏,程序初始化时为了提供好的界面所提前显示的界面
二、主要入口函数 JavaMain()
1、InitializeJVM
2、LoadMainClass
3、CallStaticVoidMethod
java.dll 对应 E:\jdk7\openjdk-7-ea-src-b142-12_may_2011\openjdk\jdk\src中的代码
- JVM 源代码笔记 一
- jvm源代码笔记 二
- jvm 源代码笔记 四 jvm主要功能模块
- jvm学习笔记(一)
- JVM学习笔记一
- jvm学习笔记一
- JVM笔记(一)
- jvm 源代码笔记 三 create_vm 主流程
- JVM 学习笔记(一) JVM内存模型
- 【JVM规范笔记一】JVM虚拟机结构
- JVM学习笔记(一)
- jvm学习笔记(一)
- JVM学习笔记(一)
- JVM学习笔记(一)
- JVM学习笔记(一)
- z4root源代码阅读笔记一
- Mootools 源代码学习笔记一
- Mantle源代码阅读笔记 一
- jQuery表格插件jqGrid之JSON数据
- HID Input Service 服务因下列错误而停止 解决方案
- selenium之WebDriver
- 关于主题模型的学习(1)
- DOS窗口复制
- JVM 源代码笔记 一
- Android源码编译整理总结
- 数论概论笔记 第11章 欧拉Φ函数与中国剩余定理
- Sublime使用心得
- jQuery 表格插件jqGrid 本地数据
- tcp建立连接和断开连接
- 高效循环Map
- MySql乱码问题
- wp7 视频下载 资源收集