JVM-类加载
2016-04-28 11:25
211 查看
类加载:类加载机制,类加载器
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
类加载机制包括:类加载的时机、类加载的过程
类加载器包括:类加载器的种类,双亲委派机制
ps:类加载器只是 类加载5个阶段(加载、验证、准备、解析、初始化)
中的加载阶段而已
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一部分:
类加载的过程:加载、验证、准备、解析、初始化
加载阶段的时机:很多内容
验证阶段:很多内容,很重要,但不是必须的。
准备阶段:要学习的内容较少。就是比如,变量值都设置为0,真正的初始化发生在 初
始化阶段
解析阶段:就是 符号引用,直接引用,找到方法的位置
初始化阶段:
(未完待续,还有很多不记得了)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二部分:
类加载器的种类:
从java虚拟机角度来说,分为两类:一类是启动类加载器(BootStrap ClassLoader),是C++语言写的,放在虚拟机外部。另一类即使所有其他的类加载器,它们都是java写的,并且都继承了java.lang.ClassLoader类
从用户程序员角度来说,可以分为更加细致些。程序员经常会用到的三类类加载器:
启动类加载器(BootStrap-ClassLoader)、扩展类加载器(Extension-ClassLoader)、应用程序类加载器(Application-ClassLoader)
双亲委派模型:
各种类加载器组织起来的层次关系,叫做双亲委派模型
双亲委派机制:
就是当要加载类的时候,(除了BootStrap ClassLoader)所有的类加载器都不会首先自己尝试去加载,而是传递给上一层父类加载器,父类加载器做同样的动作,直到加载请求传递到 启动类加载器。如果父类加载器不能完成加载,子类才会尝试去加载。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
参考书目:
《深入理解java虚拟机》
ps:本书第6章讲述了 java程序是如何存储的
本书第7章讲述了 java程序是如何载入(创建)的
本书第8章讲述了如何执行的问题,虚拟机如何执行定义在Class文件中的字节码
ps:字节码文件,是方法的执行体,是在java栈的栈帧中运行的??
ps: java文件-》编译成Class文件,然后Class中编译的类的信息,静态常量,变量啥的,到时候加载的时候,直接放在 JVM内存的方法区即可,而局部变量和方法体,则放在运行时的java栈的栈帧中即可。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
类加载机制包括:类加载的时机、类加载的过程
类加载器包括:类加载器的种类,双亲委派机制
ps:类加载器只是 类加载5个阶段(加载、验证、准备、解析、初始化)
中的加载阶段而已
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一部分:
类加载的过程:加载、验证、准备、解析、初始化
加载阶段的时机:很多内容
验证阶段:很多内容,很重要,但不是必须的。
准备阶段:要学习的内容较少。就是比如,变量值都设置为0,真正的初始化发生在 初
始化阶段
解析阶段:就是 符号引用,直接引用,找到方法的位置
初始化阶段:
(未完待续,还有很多不记得了)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二部分:
类加载器的种类:
从java虚拟机角度来说,分为两类:一类是启动类加载器(BootStrap ClassLoader),是C++语言写的,放在虚拟机外部。另一类即使所有其他的类加载器,它们都是java写的,并且都继承了java.lang.ClassLoader类
从用户程序员角度来说,可以分为更加细致些。程序员经常会用到的三类类加载器:
启动类加载器(BootStrap-ClassLoader)、扩展类加载器(Extension-ClassLoader)、应用程序类加载器(Application-ClassLoader)
双亲委派模型:
各种类加载器组织起来的层次关系,叫做双亲委派模型
双亲委派机制:
就是当要加载类的时候,(除了BootStrap ClassLoader)所有的类加载器都不会首先自己尝试去加载,而是传递给上一层父类加载器,父类加载器做同样的动作,直到加载请求传递到 启动类加载器。如果父类加载器不能完成加载,子类才会尝试去加载。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
参考书目:
《深入理解java虚拟机》
ps:本书第6章讲述了 java程序是如何存储的
本书第7章讲述了 java程序是如何载入(创建)的
本书第8章讲述了如何执行的问题,虚拟机如何执行定义在Class文件中的字节码
ps:字节码文件,是方法的执行体,是在java栈的栈帧中运行的??
ps: java文件-》编译成Class文件,然后Class中编译的类的信息,静态常量,变量啥的,到时候加载的时候,直接放在 JVM内存的方法区即可,而局部变量和方法体,则放在运行时的java栈的栈帧中即可。
相关文章推荐
- android声明的权限
- ZeroMQ,史上最快的消息队列 —– ZMQ的学习和研究
- Linux下 nginx + php 环境搭建
- Integer.ParseInt()异常
- 算法的性质
- iOS 判断设备
- android 分辨率标题栏及状态栏高度
- C++11获取时间戳和时间戳转日期(毫秒精度)
- 浅析iOS中的浅拷贝和深拷贝(copy和mutableCopy)
- 使用CSS的position属性控制页面布局的入门教程
- 文本相似度计算-JaccardSimilarity和哈希签名函数
- acer E5-572G-58HZ 安装GeForce940M+intel双显卡驱动
- 使用游标批量获取数据提高查询性能
- (转)将图片保存到相册
- 以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转)
- hdu-2187 Beauty Contest(旋转卡壳求平面最远点对)
- 安卓接入融云即时通讯的简单步骤
- 硬件服务器安装XenServer的时候发现不了安装介质
- ios TableView设置背景图片
- float 比较