类加载器
2015-08-29 14:19
225 查看
类从被加载到虚拟机内存中开始,到卸装出内存为止,它的整个生命周期包括了:加载,验证,准备,解析,初始化,使用和卸载七个阶段。其中验证、准备和解析三个部分称为链接,也就是说,一个JAVA类从字节代码到能够被JVM中使用,需要经过加载 链接 初始化这三个步骤.
![](https://img-blog.csdn.net/20150829142141918?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Java虚拟机的体系结构如上图所示:
类装载器子系统,它根据给定的完整类名来装载类或接口
执行引擎,它负责执行那些包含 在被装载类的方法中的指令。
方法区以及一个堆,它们是由该虚拟机实例中所有线程共享的。当虚拟机装载一个class文
件时,它会从这个class文件包含的二进制数据中解析类型信息。然后,它把这些类型信息入到方法区中。当程序运行时,虚拟机会把所有该程序在运行时创建的对象都放到堆中。
Java栈是由许多
栈帧
或者 帧组成的,一个栈帧包含
一个Java方法调用的状态。当线程调用一个Java方法时。虚拟机压入一个新的栈帧到该线程的Java栈中;当该方法返回时,这个栈帧就会从Java栈中被弹出或者抛弃。Java虚拟机没有寄存器,其指令集使用Java栈来存储中间数据。这样设计的原因是为了保持Java虚拟机的指令集尽量紧凑。同时也使于Java虚拟机在那些只有很少通用寄存器的平台上实现。另外,Java虚拟机的这种基于栈的体系结构,也有助于运行时某些虚拟机实现的动态编译器和即时编译器的代码优化。
Java虚拟机的体系结构如上图所示:
类装载器子系统,它根据给定的完整类名来装载类或接口
执行引擎,它负责执行那些包含 在被装载类的方法中的指令。
方法区以及一个堆,它们是由该虚拟机实例中所有线程共享的。当虚拟机装载一个class文
件时,它会从这个class文件包含的二进制数据中解析类型信息。然后,它把这些类型信息入到方法区中。当程序运行时,虚拟机会把所有该程序在运行时创建的对象都放到堆中。
Java栈是由许多
栈帧
或者 帧组成的,一个栈帧包含
一个Java方法调用的状态。当线程调用一个Java方法时。虚拟机压入一个新的栈帧到该线程的Java栈中;当该方法返回时,这个栈帧就会从Java栈中被弹出或者抛弃。Java虚拟机没有寄存器,其指令集使用Java栈来存储中间数据。这样设计的原因是为了保持Java虚拟机的指令集尽量紧凑。同时也使于Java虚拟机在那些只有很少通用寄存器的平台上实现。另外,Java虚拟机的这种基于栈的体系结构,也有助于运行时某些虚拟机实现的动态编译器和即时编译器的代码优化。
相关文章推荐
- Codeforces Round #251 (Div. 2) 439D Devu and his Brother(脑洞)
- WebService注解汇总
- 使用shell操作数据库
- 全局大喇叭 广播机制 Receiver
- Linux命令之文本搜索工具grep、egrep、fgrep
- 腾讯坐标转换百度坐标
- boost编译命令
- material design 的android开源代码整理
- 基于CDH5.4的Spark1.4.1下SparkR的部署
- redhat5.5 x64 安装oracle 11g
- 安装完Git后的相关操作总结
- unity3d游戏开发教程
- Hibernate配置文件详解
- 工作中Linux的使用总结
- sizeof(struct)说明
- LeetCode(242) Valid Anagram
- 图片自动旋转
- pytho 协程 yield
- Redis set 类型 查询命令
- tomacat无法启动---174 javajni.c] [error] %1 不是有效的 Win32 应用程序。