【发布时间】:2011-08-19 13:55:12
【问题描述】:
我已经配置了一个 Spring 应用程序(使用 Camel 与 ActiveMQ 代理集成),这样两个特定的类,例如,Person 和 Personality,通过 Spring 自动连接并注入它们的所有依赖项容器。对于本示例,Person 对象 具有 Personality 对象作为成员/属性。所以 Spring 配置文件连接了 Personality 实例,并且这些 bean 在连接的 People bean 中被引用:
<bean id="personality" class="com.me.someProgram.Personality" singleton="false">
<!-- blah... -->
</bean>
<bean id="person" class="com.me.someProgram.Person" singleton="false">
<!-- People have Personalities -->
<property name="personality" ref="personality"/>
<!-- blah... -->
</bean>
两个 bean 在范围内都被指定为 prototypes,因为这对我的应用程序有意义。基本上,每次我得到一个新的Person 时,我都需要获取一个新的Personality 实例。
我的问题:
这是我第一个使用 Spring 和 IoC/依赖注入的应用程序。我担心垃圾收集和内存泄漏。当 bean 是原型,并且原型嵌套在原型中时(通过 has-a 关系),您是否需要担心 GC/内存泄漏?或者 Spring 容器是否为您减轻了所有这些担忧?是否有关于 Spring/IoC 内存管理的最佳实践?有什么要避开的反模式?
我的实际业务对象非常大,而且我会产生很多,所以如果我开始走上一条充满糟糕内存管理的道路,那将是一段非常非常坎坷的旅程。
谢谢!
【问题讨论】:
标签: spring memory-management dependency-injection garbage-collection