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

jvm原理 ClassLoader javac

 
阅读更多

我们在自学java的时候开始需要安装JDC和JRE,对于软件开发人员来说需要安装JDK,对于不开发只运行java编译完的.class文件,只需要安装JRE即可。而且在安装JDK时也会自动的包含JRE包。

开发者:

作为一个菜鸟我们第一个程序是helloWord!,为了显示我们高端的技术和能力,我们会装13的在text文件中敲代码,当代码敲完后,你会在DOS系统运用命令执行,将java源文件编译成字节码,这是后需要的使用javac命令,并且使用javac.exe将文件后缀为.JAVA的文件编译成.,class的字节码文件。

在上述步骤完成后,需要使用java命令来执行.class文件。这个时候就需要JVMx虚拟机了。并且用到了ClassLoader,将要执行所需要的类加载到JVM进行执行。首先加载类型氛围一下四个:

1)Bootstrap ClassLoader 是将JRE下的基础JAR包加载到Jvm也成为核心jar包,如java.lang.*.等,在API中命名空间以java.*开头的类。

2)extensions ClassLoader是将扩展类加载到虚拟机中,如在API中的javax命名空间下的包。

3) APP ClassLoader是将应用程序类加载,这里的ClassPath路径下的类

4)是指用户自己定义的加载器,希望在程序执行进行加载特定的Class

在各个ClassLoader之间存在的委托,既当需要加载一个类时,会盲目的委托给上一级加载,若上一级没有则在委托回来进行加载。如自己编写了一个HelloWord的类,当app ClassLoader加载时会交给extensions ClassLoader来加载,而exttensions ClassLoader会委托给BootStrap ClassLoader来加载,这时候就会达到最顶级,BootStrapClassLoader会查找路径内是否存在该类,有则加载,没有交给Extensions ClassLoader来加载,ExtensionClassLoader会查找路径是否存在,决定是否加载,若还是没有找到,则对吼交由APP ClassLoader 来加载,当然我们知道,我们一般会放在ClassPath路径下故最终还是要返回到APP ClassLoader来加载。

向上进行检测委托,然后再向下进行加载。(个人理解,可以自己再查查);

JVM虚拟机运行时,内存会为其分配一块内存。在这块内存内包含私有和共有。私有归于每个线程所私有: java栈,程序寄存器,本地方法栈。共有的如:堆内存,方法域,常量区。在java栈中存放了每个线程所调用的方法,栈有入栈和出栈两个操作,故我们可以在编写方法是可以通过PrintStrackTrace的方法来打印方法错误信息。同样的栈还包含了方法的变量数组,方法状态等信息。方法域是指类中的方法被加载到方法域中,为所有的线程所共有,常量区是线程沟通的方法域和java栈的重要区域。

分享到:
评论

相关推荐

    JVM原理讲解和调优,详细讲解JVM底层

    JVM提供了三种类加载器:Bootstrap ClassLoader、Extension ClassLoader和Application ClassLoader,分别用于加载Java核心类库、扩展类库和应用程序类库。此外,JVM还支持自定义类加载器,以便于实现特定的加载逻辑...

    Understanding the Java ClassLoader

    为了更好地理解和利用Java的这一特性,本篇将详细介绍Java ClassLoader的作用及其工作原理,并通过构建一个示例ClassLoader来帮助读者深入理解如何自定义ClassLoader,从而扩展JVM的功能。 #### 二、ClassLoader...

    java的执行原理和JVM

    Java的执行原理和JVM是Java技术的核心所在。通过Java虚拟机,Java程序实现了跨平台的能力,大大简化了软件的部署和维护工作。同时,JVM的自动内存管理和垃圾回收机制也为开发者提供了便利,使得他们可以更加专注于...

    Java编程语言的基本原理.docx

    在运行阶段,java.exe 命令会启动 JVM,JVM 会启动类加载器 ClassLoader。ClassLoader 会去硬盘上搜索.class 文件,找到该文件则将该字节码文件装载到 JVM 中。然后,JVM 将字节码文件解释成二进制数据,并与操作...

    深入JVM整理文档

    2. **加载**:使用类加载器(ClassLoader)加载字节码到JVM。 3. **执行**:JVM解释执行字节码,可能还会涉及即时编译(JIT)以提高性能。 #### 1.3、加载.class文件的方式 Java程序可以通过以下几种方式加载....

    JVM中编译Class、内存回收、多线程原理和使用

    Java虚拟机(JVM)是Java程序运行的核心,它负责加载、执行类文件,并管理内存。JVM的设计和实现涉及到多个关键...无论是优化代码执行效率,还是解决并发问题,或者调试内存泄漏,都需要对JVM的工作原理有深入的认识。

    JVM的那些事.pptx

    Java类加载是由类加载器(ClassLoader)完成的,它负责将类的字节码加载到JVM中,并准备就绪供程序使用。具体来说,类加载器的主要职责包括: 1. **加载**:读取类的二进制数据并转换为`Class`对象。 2. **链接**:...

    JVM—java虚拟机.pptx

    - **字节码执行**:Java源代码首先通过javac编译成字节码(.class文件),然后由JVM的解释器读取并转化为机器码执行。为了提高效率,JVM还使用了Just-In-Time(JIT)编译器,将频繁执行的热点代码编译为本地机器码...

    jvm解析编译过的class文件

    首先,当我们谈论"jvm解析编译过的class文件"时,我们要知道,Java源代码(如TestClass.java)通过Java编译器(javac)被编译成字节码,即.class文件。这个字节码是一种平台无关的二进制格式,它包含了类定义、方法...

    jvm详解(java虚拟机详解)

    ### jvm详解(java虚拟机详解) #### Java与JVM概览 ...综上所述,深入理解JVM的工作原理及其内存管理机制对于优化Java程序性能至关重要。通过合理配置JVM参数,可以显著提升程序的运行效率和响应速度。

    JVM的机制学习手册非常不错

    1. 类加载器(ClassLoader):负责查找并加载类文件到JVM内存。 2. 运行时数据区(Runtime Data Areas):包括堆、方法区、虚拟机栈、本地方法栈和程序计数器。 3. 执行引擎(Execution Engine):执行字节码并管理...

    java JVM详解

    - **Classloader 子系统**:负责查找、解析并加载类到 JVM 中。 - **Execution Engine 子系统**:解释或编译并执行字节码。 - **Runtime Data Area**:包含 JVM 运行时所需的各种数据结构。 - **Native Interface**...

    JVM详解:带书签超清文字版.pdf

    ### JVM详解核心知识点 #### 一、Java与JVM概览 ...通过深入理解JVM的工作原理,开发者可以更好地优化Java应用程序的性能。此外,了解不同类型的垃圾收集器及其适用场景也是提高应用程序响应性和资源利用率的关键。

    jvm笔记记录.docx

    ### JVM基础知识及类加载机制详解 #### Java程序的运行流程 ...以上内容覆盖了Java程序的运行机制、类加载的原理以及对象的创建过程等关键概念,对于理解Java程序在JVM中的执行流程具有重要的意义。

    JVM底层及深度调优面试宝典.pdf

    - Classloader(类装载器):负责加载.class文件到运行时数据区(Runtimedataarea)中的methodarea。 - Executionengine(执行引擎):负责执行加载到JVM中的class文件中的指令。 - Runtimedataarea(运行时数据...

    JVM:类加载器子系统.pdf

    类加载器的角色体现在它为JVM提供类的加载功能,ClassLoader 类负责读取 Java 类文件,并且将类文件的信息转换为方法区内的运行时数据结构,并且在Java堆中生成一个 java.lang.Class 对象,作为方法区这些数据的入口...

    JVM学习笔记

    - **源码编译**:Java源代码通过Java编译器(如javac)被编译成字节码(.class文件)。 - **词法和语法分析**:检查代码的正确性。 - **注解处理**:处理代码中的注解信息。 - **语义分析**:确保代码符合Java...

    Java源码原理分析Java源码原理分析

    通过对Java源码的深入理解,开发者能更好地优化代码,提升程序性能,理解JVM的工作原理,以及如何利用Java提供的各种机制来解决实际问题。通过不断的实践和学习,Java开发者可以掌握更多高级技术,如并发编程、反射...

    Java虚拟机(JVM)面试宝典1.pdf

    ### Java虚拟机(JVM)面试宝典核心知识点详解 #### 一、Java内存区域 **1.1 JVM的主要组成部分及其作用**...以上内容涵盖了JVM面试宝典中的关键知识点,对于深入理解Java虚拟机的工作原理及如何进行调优具有重要意义。

Global site tag (gtag.js) - Google Analytics