rav*_*avi 15 java spring garbage-collection
我是春天的新手,我目前正在我的一个项目中使用它.我了解到spring容器包含所有bean,默认情况下所有bean的范围都是singleton.我可以在application-context.xml中或使用annptation @scope更改范围.
现在我的问题是,如果将类的范围作为"原型",则弹簧容器将在每次需要时实例化一个新对象...对吗?现在,如何处理垃圾收集.如果对象不再使用,或者它仍然悬挂在容器中,它们是否会被垃圾收集.因为我不希望每次需要创建很多对象并加载内存.
有人帮我理解这个.谢谢.
Tom*_*icz 31
从Spring文档(3.5.2原型范围):
与其他作用域相比,Spring 不管理原型bean的完整生命周期:容器实例化,配置和组装原型对象,并将其交给客户端,而不再记录该原型实例.
简单地说 - 一旦你创建并获得对prototypescoped bean 的引用,它就是JVM中唯一存在的引用.一旦此引用超出范围,该对象将被垃圾收集:
void bar() {
Object foo = ctx.getBean("foo")
}
Run Code Online (Sandbox Code Playgroud)
离开bar()方法的那一刻,没有任何其他对新实例的引用foo,这意味着它有资格进行垃圾回收.该模型的结果是:
因此,尽管无论范围如何都在所有对象上调用初始化生命周期回调方法,但在原型的情况下,不会调用已配置的销毁生命周期回调.
| 归档时间: |
|
| 查看次数: |
6851 次 |
| 最近记录: |