java类在何时被加载 缺乏、安全感 2021-09-18 04:30 220阅读 0赞 我们接着上一章的代码继续来了解一下java类是在什么时候加载的。在开始验证之前,我们现在IDEA做如下配置。 **-XX:+TraceClassLoading 监控类的加载** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70] 我们新建了一个TestController 来测试类的加载时机,代码如下: @RestController public class TestController { @RequestMapping("/newInstance") public String newInstance(){ Father father = new Father(); return ""; } @RequestMapping("/newChildrenInstance") public String childrenInstance(){ Children children = new Children(); return ""; } @RequestMapping("/staticField") public String staticField(){ String staticValue = Children.staticValue; return ""; } @RequestMapping("staticMethod") public String staticMethod(){ String bed = Children.bed(); return ""; } @RequestMapping("classForName") public String classForName() throws Exception { Class.forName("com.zhixie.jvmclassload.demo.Children"); return ""; } } ## 一、定义了main的类,启动main方法时该类会被加载 ## 本次验证采用的是springboot 2.2.0版本。当运行启动类的时候,我们可以看到只有启动类被加载了。 ![在这里插入图片描述][20191030162828904.png] ## 二、创建类的实例,即new对象的时候 ## ### 1、创建父类的实例 ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 1] 此时被加载的类有Father及Field类,我们重启服务,然后去访问创建子类的实例。**为什么要重启呢?因为每个类在虚拟机生命周期中如果存在,则不会重复加载。不重启的话,看不到我们想要的效果。** ### 2、创建子类的实例 ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 2] 在创建子类实例的时候,在加载子类之前会优先加载其父类。 ## 三、访问类的静态方法 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 3] ## 四、访问类的静态变量 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 4] ## 五、反射 Class.forName() ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 5] ## 总结 ## * java类在以上五种情况下会被加载。 * 在jvm生命周期中每个类如果存在,则不会重复加载。 * 在加载子类的时候会优先加载其父类。 * 类被加载的时候,其中的静态代码块、静态方法及静态变量也会被加载。 * 在初始化某个类时,如果这个类的静态代码块、静态方法或静态变量引用到了另一个类,则这个类也会被加载。 > 如果文章对您有帮助,请记得点赞关注哟~ > 欢迎大家关注我的公众号<情系IT>,每日推送技术文章供大家学习参考。 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70]: /images/20210918/81d2f8b6bafd415da25cb8ac366fd5ef.png [20191030162828904.png]: /images/20210918/818863c767ab40368ae59ea4bd94fb46.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 1]: /images/20210918/a38358c7c7d54847943ffd74caad1a20.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 2]: /images/20210918/d39a9096230f49ed998f5114fd3d8fd4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 3]: /images/20210918/008b14f3d8ad4a14a401e17bc6b87168.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 4]: /images/20210918/2afbfb61943c4a2e9746b43bfdc3f8ea.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTY4OTgy_size_16_color_FFFFFF_t_70 5]: /images/20210918/9634cadee5864119b17ad7f0071f6672.png
相关 Java类加载机制详解:类文件如何被JVM所识别和加载 Java的类加载机制是Java虚拟机(JVM)的核心部分,它负责在运行时将类文件转化为可用的字节码对象。 以下是类加载的一般流程: 1. 类搜索: 当一个Java应用 电玩女神/ 2024年09月16日 06:03/ 0 赞/ 7 阅读
相关 类加载机制疑问:Java中类何时被加载的实例 在Java中,类的加载时机主要由Java虚拟机(JVM)的内部机制决定。以下是类加载的一般流程: 1. **类名解析**: 当一个类名需要被使用时(例如创建对象或调用方 喜欢ヅ旅行/ 2024年09月11日 23:57/ 0 赞/ 21 阅读
相关 Java类什么时候会被加载? 在Java中,类的加载是Java程序运行时的一个重要过程,它是将类的字节码加载到Java虚拟机中的过程。Java类在以下几种情况下会被加载: 1. 当创建类的实例: 「爱情、让人受尽委屈。」/ 2024年02月05日 16:31/ 0 赞/ 29 阅读
相关 java类加载过程(java类加载过程) Java加载类的机制是怎样的? sun。com/developer /TechTips/2000/tt1027。html Writing Your Own Class ゝ一世哀愁。/ 2023年09月26日 15:30/ 0 赞/ 144 阅读
相关 java类加载(java类加载过程详解) Java虚拟机类加载过程是什么样的? 虚拟机整个的加载过程可以分为7个阶段:加载-》验证-》准备-》解析-》初始化-》使用-》卸载。 1。加载,这个过程虚拟机并没有明确 梦里梦外;/ 2023年09月26日 15:29/ 0 赞/ 116 阅读
相关 JAVA类加载机制,类加载过程,ClassLoader类加载器,类加载器关系 JAVA类加载机制 JAVA类加载器 类加载层次关系 类加载机制的特性 JAVA类加载机制 青旅半醒/ 2022年05月28日 14:10/ 0 赞/ 326 阅读
相关 何时类加载------主动引用和被动引用 主动引用(类被加载) 对类进行引用时如果类没有进行过初始化,则先触发其初始化叫做主动引用。有且只有下面情况下才会进行主动引用。 1、遇到new、getstatic、p ╰+哭是因爲堅強的太久メ/ 2022年03月08日 09:24/ 0 赞/ 169 阅读
相关 Java类加载 了解Java类加载 你想写ClassLoaders吗?或者你是否遇到 “意外的”ClassCastException或LinkageError以及 “加载器约束违规” 客官°小女子只卖身不卖艺/ 2021年09月26日 14:38/ 0 赞/ 309 阅读
相关 java类在何时被加载 我们接着上一章的代码继续来了解一下java类是在什么时候加载的。在开始验证之前,我们现在IDEA做如下配置。 -XX:+TraceClassLoading 监控类的加载 缺乏、安全感/ 2021年09月18日 04:30/ 0 赞/ 221 阅读
还没有评论,来说两句吧...