代码之家  ›  专栏  ›  技术社区  ›  Tim Florian

Spring Boot应用程序在默认情况下是否具有内存保存模式?[已关闭]

  •  0
  • Tim Florian  · 技术社区  · 7 年前

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   tsolakp    7 年前

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

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

    与单例bean不同,原型bean不由Spring保存,一旦应用程序从中删除强引用,就会被垃圾收集。

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

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

        2
  •  2
  •   Dina Bogdan    7 年前

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