博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java类加载
阅读量:6833 次
发布时间:2019-06-26

本文共 798 字,大约阅读时间需要 2 分钟。

hot3.png

本文主要介绍java类的加载机制

1.java文件结构

(现在文件的代码文件后缀为HelloWorld.java,经过javac编译后生成HelloWorld.class,这个是字节码文件,可以通过java+文件名运行。需要用二进制查看器查看,例如Binary Viewer)

c65f38b6cd5d6c0a23a190fd46191c23237.jpg

·魔术(第一行的前四位十六进制)

1e59f80f5a514eb501a682e57c6a3be514b.jpg

·Class文件版本第五位至第八位

·常量池

就是一个cp_info,由tag很info[](即关联表、嵌套表)组成,读的过程先根据tag,判断是哪个关联表,然后找到它,往下分析就可以了

68e0bbf9340b778098f59d861743ea32339.jpg

Tag的表名与对应的值:(每个表都有对应的结构,需要用这个结构去查字节码文件)

babc6346ef09a823fb1e3e553ff38d78078.jpg

f8d8181c909886091ce28fc6858defd892c.jpg

访问标志:

aed42ebac8ea6c73be24aad117a3b9fc380.jpg

·类索引,父类索引,接口索引集合

·字段表集合

·方法表集合

·属性表集合

2166b3c87bab4296d312fd68c60da9964d9.jpg

2、Class文件设计理念以及意义

Java文件按照一定的规范(语法、接口,就能java编译器所编译,生成具有一定规范的字节码文件,由于这个字节码文件具有一定的规范,所以能够java虚拟机所执行

所以只要能生成jvm能识别的字节码文件,那么这个文件就能在jvm运行。

    a、java文件按照一定的语法(自定义语法)

    b、编译器编译(自定义编译器)

    c、字节码文件(生成指定规范的字节码文件)

    d、jvm运行

    运行在jvm虚拟机之上的语言:Clojure,groovy,jruby,jython,Scala

3.java加载过程

类加载机制 :

     虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制

类加载的时机:

997b4303b965f747367b7f6f214c4ac52bf.jpg b2e77545655263319791e5017750d716244.jpg a0a4e52e7cac00376c81a76a0a409dc621e.jpg

 

95f9b9dc1b24fa9ab3518e24fd7c4fbbbc4.jpg be18b909cf719b666f15921089136906163.jpg  05e2a4a048e67180ffd623eecaea3074d44.jpg bba23895844c01dab9a4bba09fb66275cc1.jpg 074eab3a93874ea5607ee7c6caa62481c24.jpg

 d72b6726ce79413221efb1de28d541544eb.jpg

 

d850530f72556c4ea3e5fc196bfb3526b89.jpg 36039fb14876aab2e51ca108804880ff994.jpg 0a6412aeafb81254500a603346d49916c9f.jpg

一个最常用到的例子:

https://my.oschina.net/905042249/blog/2874874

转载于:https://my.oschina.net/905042249/blog/2983663

你可能感兴趣的文章
linux用户管理
查看>>
安装CentOS6网络配置问题
查看>>
JDK中的设计模式应用实例
查看>>
刘知远:让计算机听懂人话
查看>>
什么是DevOps?
查看>>
基于Spring AOP实现可控的请求日志保存,自定义注解
查看>>
secureCRT,永久设置,保护眼睛,配色方案
查看>>
[note]wordpress上线准备
查看>>
TFT working sequence
查看>>
Inside Cisco IOS Software Architecture(第一章,系统基础知识)
查看>>
java.lang.UnsupportedClassVersionError: Bad version number in .class file
查看>>
理解 Neutorn LBaaS - 每天5分钟玩转 OpenStack(120)
查看>>
CentOS上面的MRTG快速配置
查看>>
SysUtils 中其他 PChar 函数: StrPas、StrNew、StrDispose、StrNextChar、StrFmt、StrLFmt、StrCharLength...
查看>>
用Java写算法之五:快速排序
查看>>
UK 更新惊魂记
查看>>
ZooKeeper-3.3.4集群安装配置
查看>>
《Spring In Action》第三版中文版 Chapter 1 Piece 3
查看>>
用图片拼接图片 C#
查看>>
python对多个数据库执行mysql的source命令
查看>>