Java Spring应用程序上下文和BeanFactory

Java Spring应用程序上下文和BeanFactory,java,spring,memory-management,Java,Spring,Memory Management,Spring应用程序上下文将在服务器启动时加载所有单例bean。但在大型应用程序中,它已将许多对象加载到内存中。这不是应用程序的性能瓶颈吗?它不会收集堆上的空间/堆中的永久空间。不,这不会导致内存问题,除非您运行在内存空间很小的嵌入式系统上。在此上下文中,“许多对象”最多可能是几百或几千个。这在今天的内存分配中几乎算不上什么。这是一个设计选择的问题,作为一个程序员,你必须选择——是的,对象将占用内存——是的,它们被急切地实例化。这些对象将占用多少内存取决于它们所包含的内容——可以是小的,也可以是

Spring应用程序上下文将在服务器启动时加载所有单例bean。但在大型应用程序中,它已将许多对象加载到内存中。这不是应用程序的性能瓶颈吗?它不会收集堆上的空间/堆中的永久空间。

不,这不会导致内存问题,除非您运行在内存空间很小的嵌入式系统上。在此上下文中,“许多对象”最多可能是几百或几千个。这在今天的内存分配中几乎算不上什么。

这是一个设计选择的问题,作为一个程序员,你必须选择——是的,对象将占用内存——是的,它们被急切地实例化。这些对象将占用多少内存取决于它们所包含的内容——可以是小的,也可以是大的。它是好是坏取决于你的程序做什么

同样正确的是,Spring还支持bean的延迟初始化

<bean id="foo" class="com.foo.SomeBean" lazy-init="true"/>

您还可以强制所有bean延迟加载。看这里