如果Java应用程序作为服务运行,Spring上下文如何关闭?

问题描述:

我写了一个java应用程序,意在作为使用Spring的DI服务运行。 由于这个应用程序“永远”运行,它永远不会达到它关闭Spring上下文的程度。如果Java应用程序作为服务运行,Spring上下文如何关闭?

可就在长远来看,这会导致问题?对于这些情况,以标准方式创建对象可能更好,而不是使用Spring注入对象?

我还可以看到堆的使用量缓慢增加,我不知道这可能是原因。

谢谢。

+0

如果将Spring应用程序配置为服务,通常意味着它的组件被配置为无状态单例,所以只要不需要刷新任何内容,spring就可以继续运行,因为它不会再分配任何其他组件。如果你的堆使用量持续增长,那通常意味着你的问题,而不是Spring的,就像[galovics建议]一样(http://stackoverflow.com/a/43320221/7470253) –

+0

如何将应用程序配置为服务?春天有没有变化? – Federico

+0

不是,这通常只意味着你的Spring组件本身就是无状态的服务。 –

它不应该是一个问题,如果你没有内存泄漏在应用程序中。

如果你看到你的堆不断增加,那么可能会有一些与Spring无关的东西。

如果您对什么导致内存消耗没有任何想法,那么我建议查看一些JVM工具,例如JVisualVM是JDK中提供的一个选项。有了这个,你可以很容易地检查你的线程正在做什么,你在内存中有哪些对象正在增长。