`
come_for_dream
  • 浏览: 120045 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JVM类加载之深入探究(一)

    博客分类:
  • JVM
阅读更多

JVM类加载之深入探究

      本博客参考自http://1509221674.iteye.com/blog/2158485。

     我们平时在Eclipse或者IDEA写一个java程序的时候,都是编辑器帮助我们自动完成编译,我们点击绿色按钮运行程序,整个过程遂心应手,但是你可曾想过你写的代码如何被编译?编译后的字节码又如何在运行的时候被加载到JVM(JAVA Virtual Machine)?

     我们写的java代码要被JVM执行首先要被编译成.class的文件,这个文件是可以被JVM执行的字节码,也就是相当于1000111这种被JVM所识别的”机器语言“。那么我们的被编译好的class文件在运行的时候又是怎么被加载到JVM中呢?下面就结合一个例子进行说明。

     首先看第一个例子:

class Shape {
	private int ShapeCommonValue = init("the ShapeCommonValue is inited");
	private static int ShapeStaticValue = init("the ShapeStaticValue is inited");
	static {
		init("the static block is executed");
	}

	public Shape() {
		init("the construction of Shape is executed");
	}

	public static int init(String out) {
		System.out.println(out + "  the staticValue is  " + ShapeStaticValue);
		ShapeStaticValue++;
		return ShapeStaticValue;
	}
}

public class Circle extends Shape {
	private static int CircleStaticValue = init("the CircleStaticValue is inited");
	private int CircleCommonValue = init("the CircleCommonValue is inited");

	public Circle() {
		init("the construction of Circle is executed");
	}

	public static void main(String[] args) {
		Circle circle = new Circle();
	}
}

    这个例子说明了子类和父类的初始化的过程,

        首先JVM对Circle类进行加载时,发现有父类Shape

        则JVM首先加载父类Shape 的.class文件 

 

        然后 对父类中静态资源进行初始化:先加载静态变量,后执行静态块

 

        对子类的静态资源初始化

 

        对父类Shap普通属性初始化

 

        对父类构造方法的初始化

 

        对子类成员属性的初始化

 

        对子类构造方法的初始化

 

则运行程序后将验证以上过程:



 

 

  

  • 大小: 207.2 KB
分享到:
评论

相关推荐

    狂神说JVM探究.rar

    【狂神说JVM探究】是一份集合了多种格式的学习资料,主要涵盖了Java虚拟机(JVM)的基础知识。这份资料出自B站上的【狂神说Java】系列教程,为快速入门JVM提供了详实的笔记。以下是根据这些资源可能包含的一些关键...

    33、JVM探究.pdf

    【JVM探究】 Java虚拟机(JVM)是Java编程语言的核心组成部分,它负责执行Java程序,提供了一个跨平台的运行环境。理解JVM的工作原理对于优化Java应用程序性能至关重要。以下是一些关于JVM的关键知识点: 1. **JVM...

    JVM原理.pdf

    JVM运行机制复杂且至关重要,涉及到内存分配、垃圾回收、类加载机制等多个方面。冯立全在分享中重点介绍了JVM运行机制,尤其强调了运行时数据区域的布局、Class文件的结构、字节码技术、类加载机制以及垃圾回收算法...

    深入理解JVM内存结构及运行原理全套视频加资料.txt

    JVM是Java知识体系中的重要部分,对JVM底层的了解是每一位Java程序员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统的深入讲解JVM相关知识。包括JVM执行过程、虚拟机类加载机制、运行时数据区、GC...

    深入浅出jvm虚拟机视频大全(jvm性能调优+内存模型+虚拟机原理)

    JVM的核心组件之一就是字节码解释器,它负责执行字节码指令。此外,JVM还包含一个即时编译器(JIT Compiler),能够将热点代码编译成本地机器码,提高执行效率。 #### 3. 内存分配与回收策略 - **内存分配**:对象...

    monkey老师的jvm 调优

    Monkey老师的JVM调优课程,无疑为我们提供了一个宝贵的平台,来深入探究JVM的工作原理及其优化技巧。下面,我们就一起来深入学习Monkey老师关于JVM调优的核心知识点。 首先,我们要明白JVM的重要性。它是Java程序...

    jvm 深入讲解

    深入理解JVM对于Java开发者来说至关重要,尤其是对于那些热衷于性能优化、内存管理或者想要探究程序运行机制的程序员。本讲解将从以下几个关键点详细阐述JVM的知识点: 1. **JVM结构**:JVM主要由类加载器、运行时...

    6.1.1.JVM前奏篇笔记1

    在深入探讨JVM之前,我们先来了解一下Java的开发环境和源码到字节码的转换过程。Java是由Oracle公司提供的...通过学习这些知识,我们可以深入探究Java的内存管理、异常处理、多线程等高级主题,提升我们的编程技能。

    Java JVM Instruction Set

    我们将关注于机器如何运作,并且更重要的是,探究JVM开发者为何选择特定的方式来设计这些功能。 #### 为什么称为“虚拟”机器? 你可能听说过与Java语言相关的Java虚拟机(JVM)。那么,这里所说的“虚拟”到底...

    狂神说JVM探究md完整版

    **狂神说JVM探究** 是一套深度剖析Java虚拟机(JVM)的教程,以Markdown格式编写,包含了丰富的文字描述和辅助图片。本教程旨在帮助开发者深入理解JVM的工作原理,提升Java程序的性能调优能力。以下是教程中可能涉及...

    全面解析Java类加载器

    深入理解和探究Java类加载机制—-  1.java.lang.ClassLoader类介绍  java.lang.ClassLoader类的基本职责是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个Java 类,即 ...

    jvm理解pdf

    《深入理解Java虚拟机:JVM高级特性与最佳实践》这本书是Java开发者深入探究JVM(Java Virtual Machine)的重要参考资料。JVM作为Java程序运行的基础,它的理解和优化对于提升Java应用性能至关重要。以下将详细阐述...

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第88节类加载的过程-加载00:15:15分钟 | 第89节类加载的过程-验证00:10:24分钟 | 第90节类加载的过程-准备00:05:40分钟 | 第91节类加载的过程-解析00:14:04分钟 | 第92节类加载的过程-初始化00:19:41分钟 | 第...

    探究java的ClassLoader及类变量初始化顺序

    在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作机制以及类变量初始化的顺序对于深入理解Java运行时环境至关重要。这篇博文将探讨这两个主题。 首先,让...

    java-jvm-JikesRVM

    JikesRVM的设计目标是成为一个研究平台,帮助开发者深入理解JVM的内部工作机制,并用于实验新的虚拟机技术。 JikesRVM的设计理念是模块化和可配置性,这意味着它可以被调整以适应不同的应用场景,例如,优化服务器...

    java深度历险

    在《Java深度历险》这本书中,读者将深入探究这些主题,通过实例分析和实战演练,掌握Java核心技术。书中可能还会涉及编译过程、异常处理、多线程、反射等高级话题,帮助开发者从底层到应用层全面理解Java,提升编程...

    怎样用Jvm处理Java数组.doc

    Java虚拟机(JVM)是Java程序的核心执行环境,它负责解释和执行字节码,同时也管理内存和类加载。在处理Java数组时,有一些关键的特性...理解这一点有助于我们更好地理解和使用Java数组,以及深入探究JVM的工作原理。

    Java虚拟源代码.zip

    1. **类加载器**:在运行时,JVM通过类加载器将字节码文件(.class文件)加载到内存中。类加载器分为引导类加载器、扩展类加载器和应用程序类加载器,它们共同完成类的加载工作。 2. **字节码验证**:JVM在运行前会...

    自己动手写Java虚拟机及class文件解析分析工具(java8运行)

    《自己动手写Java虚拟机及class文件解析分析工具(java8运行)》是一份深入探讨Java虚拟机(JVM)工作原理以及如何解析与分析Java类文件(.class)的资源。通过使用Go语言实现一个简化的JVM,这份资料旨在帮助读者...

    java学习杂谈

    执行此命令后,控制台将详细列出JVM加载的每个类文件,包括JDK自带的系统类库以及用户自定义的类。通过观察这些输出,可以清晰地看到,只有当程序真正使用到某个类时,该类才会被加载,这体现了Java的动态加载机制。...

Global site tag (gtag.js) - Google Analytics