深入JVM-Class装载系统】的更多相关文章

一.Class文件的装载过程 Class类型通常以文件的形式存在(当然,任何二进制流都可以是Class类型),只有被Java虚拟机装载的Class类型才能在程序中使用.系统状态Class类型可以分为加载.连接和初始化3个步骤.其中,连接又可分为验证.准备和解析3步. 1.1 类装载的条件 Class只有在必须要使用的时候才会被装载,Java虚拟机不会无条件的装载Class类型.Java虚拟机规定,一个类或接口在初次使用前,必须要进行初始化.这里指的"使用",是指主动使用,主动使用只有下…
简述众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳,它会装载jvm.dll(windows下,以下皆以windows平台为例,linux下和solaris下其实类似,为:libjvm.so),这个动态连接库才是java虚拟机的实际操作处理所在.本文探究java.exe程序是如何查找和装载jvm.dll动态库,并调用它进行class文件执行处理的. 源代码本文分析之代码,<JavaTM 2 SDK, Standard Edition,…
同样,一个Class对象必须知道自己的超类.超级接口.因此,Class对象会引用自己的超类和超级接口的Class对象.这种引用一定是实例引用.(实际上,超类.超级接口的引用也存储在常量池中,但为了区分依赖类的引用,将它特殊表述一下.) 因此,我暂且得到两条结论. 结论一:持有一个Class对象的引用,则任何该Class对象直接或间接依赖的所有类(如果被加载了),都不可能被卸载.同样,只要有一个类直接或间接依赖某个类,则该类不可能被卸载. 结论二:持有一个Class对象的引用,则该类的所有超类.超…
引言 如有错误,请批评指正. Java是一种动态连接的语言.所谓动态连接,大概可以这么解释. 首先,Java可以大概想象成是编译解释执行的.对于一个*.java的文件,通过javac将会编译成一个*.class文件.而JVM会解释执行*.class文件.但一个软件不可能只有一个class文件,一个项目往往有众多的class文件.这些class存储了足以供JVM执行的字节码,但却只有在连接之后才能执行. 所谓的Java是动态连接的语言,是指class文件并非在编译时连接的,而是在运行时连接的.对于…
JVM剖析 这篇文章详细解释了Java虚拟机的内部架构.以下这幅图展示了Java虚拟机里面的关键组件(是依据Java SE 7版本的Java虚拟机). 这些组件将在下面的两个章节一一展开.第一章节涵盖了创建每一个线程(Thread)的组件:第二章节涵盖了独立于线程外的组件. 线程(Threads) 1 JVM系统线程 2 单线程 3 程序计数器(PC) 4 栈 5 局部栈(Native Stack) 6 栈约束 7 Frame 8 局部变量数组 9 操作符栈 10 动态链接 线程之间共享(Sha…
这不是一篇描述jvm是什么的文章,也不介绍jvm跨平台的特性,也不是讲述jvm安全特性的文章,更不是讲解jvm指令操作,数据运算的文章,本文重点讲述类型的生命周期. 类型的生命周期涉及到:类的装载.jvm体系结构.垃圾回收机制. 为什么要讲jvm体系结构?因为类的装载和垃圾回收机制都和jvm体系结构息息相关. 那么什么是jvm体系结构呢? 当jvm运行起来的时候,它会向系统申请一片内存区(不同的jvm实现可能不同,有些可以使用虚拟内存),将这块内存分出一部分存储许多东西,例如:程序创建的对象,传…
本文转自https://zhuanlan.zhihu.com/p/25713880. JVM的基础概念 JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机. JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,这时候JVM的作用就体现出来了,它负责把我们的程序翻译给系统“听”,告诉它我们的程序需要做什么操作. 我们都知道Java的程序需要经过编译后,产生.Class文件,JVM才能识别并运行它,JVM针对每个操作系统开发其对应…
JVM启动流程 (1)在java中jvm是通过java或javaw命令启动的,后面跟加载的类名. (2)jvm在启动的时候先根据[当前路径和系统版本寻找jvm的配置文件jvm.cfg]装载配置. (3)然后根据配置文件寻找jvm.dll(JVM的主要实现) (4)找到jvm.dll后,利用jvm.dll初始化JVM---->获得一些jvm Nativej接口(例:JNIEnv:提供大量与jvm交互的操作,比如在查找一个类的时候就需要通过这个类) (5)找到加载的类中的main方法,并运行…
转载注明出处: http://blog.csdn.net/cutesource/article/details/5904501 JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例 4.调用JNIEnv实例装载并处理class类. 在我们运行和调试Java程序的时候,经常会提到一个JVM的概念.JVM是Java程序…
前面的几篇都没有太明确地指出 方法区 是什么?现在通过一些资料的收集和学习,下面做一些总结 什么是方法区: 方法区是系统分配的一个内存逻辑区域,是JVM在装载类文件时,用于存储类型信息的(类的描述信息). 方法区存放的信息包括: 类的基本信息: 1.每个类的全限定名 2.每个类的直接超类的全限定名(可约束类型转换) 3.该类是类还是接口 4.该类型的访问修饰符 5.直接超接口的全限定名的有序列表 已装载类的详细信息 1.      运行时常量池:在方法区中,每个类型都对应一个常量池,存放该类型所…