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

jvm源代码笔记 二

阅读更多
由于在windows下建立jdk的工程环境非常的麻烦,所以干脆就直接来看了,(一般的读代码最快的方式是打断点,看调用流程),经过艰苦的奋斗,最主要的代码的位置终于找到了。

openjdk\hotspot\src\share\tools\launcher\java.c 中的main函数是整个hotspot虚拟机的入口,
和其他程序一样,main函数是在非常高的抽象程度进行抽象并进而描述主流程,进行必要的初始化之后,
JavaMain在新的线程中开启并开始执行java的main class。从jvm本身启动的角度来看,最主要的流程是通过
一个回调来进行的,此回调函数通过 InvocationFunctions 数据结构进行传递。
主要的函数 LoadJavaVM:(hotspot\src\os\windows\launcher\java_md.c) 这个函数是设置这个回调的地方。
最核心的 JNI_CreateJavaVM函数 在hotspot\src\share\vm\prims\jni.cpp中,此函数内的主要的执行流程Threads::create_vm在
hotspot\src\share\vm\runtimes\thread.cpp



PS:hotspot JVM确实是世界级的牛人写的代码,在看到代码的内容时也确实是给人很多的启示,各位看客有时间可以去看看里面具体的内容。

本文写于 2011年5月
分享到:
评论

相关推荐

    jvm中篇笔记.md

    - 将 Java 源代码转换为符合 JVM 规范的字节码文件。 - `javac` 是 Java 语言的标准前端编译器,用于将 Java 源代码编译为字节码。 - 编译过程包括四个阶段:词法分析、语法分析、语义分析和字节码生成。 ##### ...

    6.1.1.JVM前奏篇笔记1

    当编写完Java源代码(例如`Person.java`)后,我们使用JDK中的`javac`编译器将其转化为字节码文件(例如`Person.class`)。这个过程中,源码首先通过词法分析器转化为tokens流,接着由语法分析器构建语法树,再经过...

    读书笔记:深入理解Java虚拟机JVM高级特性与最佳实践第2版源代码.zip

    读书笔记:深入理解Java虚拟机JVM高级特性与最佳实践第2版源代码

    6.1.2.JVM进行篇笔记1

    Java源代码经过编译后生成字节码,如calc()方法的字节码指令。iconst_3将整型常量3压入操作数栈,istore_0将栈顶的3存入局部变量0,iload_0再将局部变量0的值加载回栈,如此类推,执行加法操作(iadd),最后ireturn...

    Java JDK 7学习笔记源代码

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

    JVM学习笔记核心知识点整理

    - **Java**:兼具编译型与解释型的特点,源代码首先被编译为字节码,然后由JVM解释执行,同时也支持JIT(Just-In-Time)编译以提高执行效率。 #### 三、JVM核心技术详解 ##### 1. 类文件加载机制 类文件加载是指...

    韩顺平java视频教程源代码和笔记

    ### 韩顺平Java视频教程源代码与笔记解析 #### Java平台概述 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版的Java开发平台,适用于桌面应用程序开发,提供了完整的Java技术和API集合。 - **J2EE(Java...

    动力节点JAVA基础+进阶源代码和笔记.rar

    动力节点的JAVA基础与进阶课程源代码和笔记集合提供了全面深入的学习材料,旨在帮助初学者及有经验的开发者巩固和提升Java编程技能。这个压缩包包含了一系列的代码示例和学习笔记,覆盖了从基础到高级的Java知识点。...

    Java注解笔记源代码

    1. **@Retention**:定义注解的保留策略,可以是`SOURCE`(源码级,只存在于源代码中),`CLASS`(类文件级,存在于字节码中但不被JVM加载),或`RUNTIME`(运行时,JVM可以读取并使用)。 2. **@Target**:指定...

    Java分布式应用学习笔记-谈JVM.doc

    Java SDK中的javac编译器将.java源代码转化为.class字节码。这个过程包括: 1. 分析输入到符号表,构建抽象语法树。 2. 处理注解,JDK1.5之后,注解成为JVM处理的一部分。 3. 一系列的语义检查、验证和代码优化,...

    jvm笔记记录.docx

    自定义类加载器的常见用途包括隔离加载类、修改类的加载方式、扩展加载源等。 #### 获取类加载器的方法 - `clazz.getClassLoader()`: 获取当前类的`ClassLoader`。 - `Thread.currentThread()....

    环境变量配置及JVM虚拟机笔记

    - **源代码编译**:通过`javac`命令将`.java`文件编译成`.class`文件。 - **字节码执行**:JVM读取编译后的`.class`文件,并解释执行其中的字节码指令。 ##### JVM架构 JVM主要由以下几个部分组成: - **类加载器...

    大数据笔记kafka-jvm.zip

    1. JVM概述:Java虚拟机是Java程序的运行平台,负责解析字节码并执行Java代码。 2. 类加载机制:JVM如何加载类文件,包括加载、验证、准备、解析和初始化五个阶段。 3. 内存模型:JVM内存包括堆、栈、方法区、本地...

    JVM学习笔记

    ### JVM学习笔记知识点详解 #### 一、JVM的基本结构 **JVM(Java Virtual Machine,Java虚拟机)**是一种可以执行Java字节码的虚拟机。它为Java提供了平台无关性,使得Java代码可以在任何安装了JVM的平台上运行。 ...

    《JVM从入门到入魔》笔记.pdf

    编译型语言(如C、C++、Go)在运行前通过编译器将源代码一次性编译成机器码,生成可直接运行的程序,其执行速度快,但跨平台性较差。解释型语言(如Python、JavaScript)则在运行时逐行解释并执行源代码,虽然跨平台...

    Jack_《JVM从入门到入魔》笔记.pdf

    Java语言则处于这两种类型之间,它首先通过javac编译器将源代码编译成字节码,然后在JVM中执行。JVM既有解释器也有编译器(JIT,Just-In-Time Compiler),它会动态地将部分字节码编译为机器码以提高运行效率,这...

    Java反射笔记源代码

    8. **性能影响**:反射操作通常比直接的Java代码慢,因为它们需要更多的JVM支持。在性能敏感的应用中,应当避免过度使用反射。 9. **动态代理**:Java反射还支持动态代理,允许我们在运行时创建实现了指定接口的新...

    java之jvm学习笔记九(策略文件)

    2. **定义权限**:为每个需要权限控制的代码源定义相应的权限。 3. **加载策略**:在Java程序启动时,通过`Policy.setPolicy()`方法加载自定义的策略文件。 4. **测试和调整**:运行程序并检查权限控制是否符合预期...

Global site tag (gtag.js) - Google Analytics