Spring-启动应用程序是否默认具有内存节省模式?

Does Spring-Boot application has memory save mode by default?

spring 是否足够聪明,可以根据 bean 的使用频率创建和销毁 bean 的实例,以便在应用程序工作期间节省 RAM?如果是,我们应该应用一些特殊的配置配置还是这个(保存 RAM)属性 默认使用?

Spring 只是 java 编程语言的框架。 JVM 提供了垃圾收集器,这是一个通过在某个时刻分配的未使用内存来清理堆内存的过程。因此,简而言之,java 足够聪明,可以销毁所有不再使用的 bean(使用垃圾收集器)。

正如@Dina Bogdan 所回答的那样,内存管理由 JVM 垃圾收集器完成,所有 Spring 和应用程序可以做的就是删除对它们从不需要的 bean 的任何强引用。

对于单例 bean,在应用程序上下文生命周期内永远不会删除引用。这是因为 Spring 会跟踪它们,即使您的应用程序从它们中删除了字符串引用,它们仍然会被 Spring 缓存强烈引用。

与单例 bean 相比,原型 bean 不由 Spring 保留,一旦应用程序从中删除强引用,原型 bean 将被垃圾回收。

对于请求或会话等其他作用域 bean,它们将在请求或会话结束后被垃圾回收,除非应用程序仍将引用它们。

现在回答你的问题。如果您真的想管理 bean 的垃圾收集方式,您可以创建 Spring 代理,该代理将通过弱引用引用其目标 bean。这将允许垃圾收集器在内存紧张时收集该 bean。