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中的代码
原创粉丝点击