摘要:
由于 Spring 源码非常多,博客中贴源码会占用大量篇幅,阅读困难。详细分析部分会以 commit 提交形式关联源码提交,画图例来说明源码整体逻辑。 Bean 生命周期主体逻辑 相关代码:Bean的基本创建流程、lazyInit、循环依赖 Bean 对象创建基本流程 通过最开始的关键时机点分析,我 阅读全文
摘要:
相关代码提交记录:https://github.com/linweiwang/spring-framework-5.3.33 IoC 容器三种启动方式 XML JavaSE: ApplicationContext context = new ClassPathXmlApplicationContex 阅读全文
摘要:
注意事项: 使用 2024-03-14 发布的 Spring 5.3.33 版本 IDE 工具使用了 Intellij IDEA,同时为了简化不必要的内容没单独配置 Gradle 环境 JDK 版本采用 Eclipse Temurin 1.8/11 均可 下载源码 下载 SpringFramewor 阅读全文
摘要:
1 垃圾回收相关算法 垃圾回收器首先要做的就是,判断一个对象是存活状态还是死亡状态,死亡的对象将会被标识为垃圾数据并等待收集器进行清除。 判断一个对象是否为死亡状态的常用算法有两个:引用计数器算法 、可达性分析算法。 垃圾回收的常见算法有以下几个:标记-清除算法、标记-复制算法、标记-整理算法。 1 阅读全文
摘要:
1 类的加载 类的加载指的是将类的 .class 文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class 对象,用来封装类在方法区内的数据结构。 类的加载的最终产品是位于堆区中的 Class对象, Class对象封装了类在方法区内的数据结构 阅读全文
摘要:
1 内存布局总体结构 根据 JVM 规范,JVM 内存共分为虚拟机栈(Virtual Machine Stacks)、堆(Heap)、方法区(Method Area)、程序计数器(Program Counter Registers)、本地方法栈(Native Method Stacks)五个部分。 阅读全文
摘要:
什么是JVM JVM 即 Java Virtual Machine,中文名为 Java虚拟机。 一般情况下 C/C++ 程序,编译成二进制文件后,就可以直接执行了; Java 需要使用 javac 编译成 .class 文件,还需要使用 Java 命令去主动执行它。JVM 就是识别 .class 后 阅读全文