BeanFactory是 Spring 框架的焦点接口之一,它是 Spring 容器的顶层抽象,负责管理和维护 Spring 中的 Bean(也就是 Java 对象)。它提供了一种高级的设置机制以及对 Bean 实例化、设置和管理的功能,简单来说,就是它掌控着 Spring 应用中各个对象的创建、装配以及生命周期等诸多事件。BeanFactory采用的是延迟初始化计谋,也就是只有在真正必要使用某个 Bean 的时间,才会去实例化它。
XmlBeanFactory:这是早期 Spring 版本中常用的基于 XML 设置文件的BeanFactory实现类,不过厥后渐渐被功能更强大的ApplicationContext相关实现类替代,但在一些简单场景大概学习了解BeanFactory基本原理时还是会涉及到它。
ApplicationContext:它是BeanFactory的子接口,功能更加强大,不但具备BeanFactory的基本功能,还额外提供了如国际化支持、事件发布与订阅、资源加载等更多高级功能,是实际开发中使用更为广泛的 Spring 容器实现情势。
Eden 区:这是年轻代中最大的一个区域,新创建的对象通常首先会被分配到 Eden 区的内存空间中。比方,当我们在 Java 代码中通过new关键字创建一个新的对象时,只要 Eden 区另有足够的空闲内存,这个对象就会在这里分配内存,像Object obj = new Object();这样简单的对象创建操纵,对象大概率就初始分配在 Eden 区。
Survivor 区:Survivor 区又分为Survivor0(也常称作from区)和Survivor1(也常称作to区),它们的巨细一样平常是相同的,两个区主要用于在垃圾回收过程中存放那些颠末一次垃圾回收后仍然存活的对象。当 Eden 区进行垃圾回收(在年轻代中这种垃圾回收称作 Minor GC)后,存活下来的对象会被转移到此中一个 Survivor 区(好比Survivor0),下一次 Minor GC 时,Eden 区和当前使用的 Survivor 区(Survivor0)中存活的对象会被一起转移到另一个 Survivor 区(Survivor1),如此反复,对象会在两个 Survivor 区之间来回复制转移,并且每颠末一次这样的转移,对象的年事(通过对象头中的一个字段来记录)就会加 1,直到对象的年事达到肯定阈值(可以通过 JVM 参数进行设置,默认是 15),这些对象就会被晋升(Promotion)到年老代中。