文档章节

类加载机制

ssnoodles
 ssnoodles
发布于 2017/06/02 23:52
字数 232
阅读 26
收藏 2

类加载

ClassLoader 干的事,就是把class文件加载到JVM中去。

Java默认提供3个类加载器

  • BootstrapClassLoader
  • ExtClassLoader
  • AppClassLoader
public class ClassLoaderTest {

    public static void main(String[] args) {
        System.out.println(ClassLoaderTest.class.getClassLoader());
        System.out.println(ClassLoaderTest.class.getClassLoader().getParent());
        System.out.println(ClassLoaderTest.class.getClassLoader().getParent().getParent());
    }
}

打印出:

sun.misc.Launcher$AppClassLoader@18b4aac2
sun.misc.Launcher$ExtClassLoader@2f92e0f4
null

null 是因为BootstrapClassLoader 不是java写的而是c++写的。

先从顶层开始加载,如果加载不到就交由下一级加载,都加载不到就抛ClassNotFoundException异常。

具体过程

  • 加载
    • 根据类的全名获取二进制流
    • 将二进制流转化为JVM方法区的数据结构
    • 在内存中实例化Class对象,放入方法区对外提供接口
  • 验证
    • 二进制包含的信息符合JVM的要求
  • 准备
    • 静态变量分配到内存并初始化默认值
    • 常量池内的符号引用替换成直接引用
  • 初始化
    • 静态变量赋值
    • 执行静态代码块

© 著作权归作者所有

共有 人打赏支持
ssnoodles
粉丝 1
博文 31
码字总数 9574
作品 0
张家港

暂无文章

Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理

Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问。 配置文件写入如下内容: allow 表示允许访问的IP,deny限制访问的IP。 匹配正...

黄昏残影
9分钟前
0
0
自己动手实现RPC服务调用框架

转载 TCP的RPC 引言 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者)、battercake-consumer(服务调用者)。 设计思路...

雨中漫步的鱼
12分钟前
0
0
Centos6.x安装之后的9件事

Centos6.x安装之后的9件事 这些不是必须都做的,只不过是我个人的习惯,在此记录一下。 1.修改yum源到国内 CentOS系统更换软件安装源 备份你的原镜像文件,以免出错后可以恢复。 mv /etc/yu...

叶云轩
17分钟前
5
0
springboot2 使用jsp NoHandlerFoundException

开发图片上传功能,为验证测试功能是否正常,使用JSP编写表单提交进行测试 开发完成后,请求API提示如下异常: No mapping found for HTTP request with URI [/WEB-INF/jsp/avatar_upload.j...

showlike
23分钟前
0
0
springboot踩坑记--springboot正常启动但访问404

一 spring boot的启动类不能直接放在main(src.java.main)这个包下面,把它放在有包的里面就可以了。 二 正常启动了,但是我写了一个controller ,用的@RestController 注解去配置的controlle...

onedotdot
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部