JVM 技术详解:Java 类加载器

前面我们学习了 Java 字节码,写好的代码经过编译变成了字节码,并且可以打包成 Jar 文件。

然后就可以让 JVM 去加载需要的字节码,变成持久代/元数据区上的 Class 对象,接着才会执行我们的程序逻辑。

我们可以用 Java 命令指定主启动类,或者是 Jar 包,通过约定好的机制,JVM 就会自动去加载对应的字节码(可能是 class 文件,也可能是 Jar 包)。

我们知道 Jar 包打开后实际上就等价于一个文件夹,里面有很多 class 文件和资源文件,但是为了方便就打包成 zip 格式。 当然解压了之后照样可以直接用 java 命令来执行。

$ java Hello

或者把 Hello.class 和依赖的其他文件一起打包成 jar 文件:

示例 1: 将 class 文件和 java 源文件归档到一个名为 hello.jar 的档案中: jar cvf hello.jar Hello.class Hello.java 示例 2: 归档的同时,通过 e 选项指定 jar 的启动类 Hello: jar cvfe hello.jar Hello Hello.class Hello.java

然后通过 -jar 选项来执行jar包:

$ java -jar hello.jar

当然我们回过头来还可以把 jar 解压了,再用上面的 java 命令来运行。

运行 java 程序的第一步就是加载 class 文件/或输入流里面包含的字节码。

  1. 类的生命周期和加载过程
  2. 类加载时机
  3. 类加载机制
  4. 自定义类加载器示例
  5. 一些实用技巧
  • 如何排查找不到 Jar 包的问题?
  • 如何排查类的方法不一致的问题?
  • 怎么看到加载了哪些类,以及加载顺序?
  • 怎么调整或修改 ext 和本地加载路径?
  • 怎么运行期加载额外的 jar 包或者 class 呢?
还有 94% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥1.99 继续阅读

友情链接更多精彩内容