![]() |
1
2
正如@Dina Bogdan所回答的那样,内存管理是由JVM垃圾收集器完成的,Spring和应用程序所能做的就是删除对bean的任何不需要的强引用。 对于单例bean,在应用程序上下文生命周期内,永远不会删除引用。这是因为Spring会跟踪它们,即使应用程序从中删除了字符串引用,它们仍然会被Spring缓存强烈引用。 与单例bean不同,原型bean不由Spring保存,一旦应用程序从中删除强引用,就会被垃圾收集。 对于其他作用域bean,如请求或会话,它们将在请求或会话结束后被垃圾收集,除非应用程序仍保留对它们的引用。 现在回答你的问题。如果您真的想管理bean如何被垃圾收集,那么可以创建Spring代理,该代理将通过弱引用引用其目标bean。这将允许垃圾收集器在内存紧张时收集该bean。 |
![]() |
2
2
Spring只是java编程语言上的一个框架。JVM提供了垃圾收集器,这是一个通过在某个时刻分配的未使用内存来清理堆内存的进程。所以,简而言之,java足够聪明,可以销毁所有不再使用的bean(使用垃圾收集器)。 |
![]() |
StayCool · Ninject。扩展。约定不会绑定单个接口 7 年前 |
![]() |
Nickso · 通用属性和IoC(Autofac)问题 7 年前 |
![]() |
LightCC · 如何在C中设置DI/IoC和/或工厂模式设计# 7 年前 |
![]() |
Eitan · 使用Castle动态代理拦截所有依赖项 7 年前 |