在静态方法中实例化Spring.Net上下文会导致内存泄漏

时间:2009-10-28 22:36:51

标签: memory-leaks spring.net

最近跑过去,想知道那里有人能给我一个很好的解释。我正在进行一些重构并创建一个spring上下文来从嵌入式配置文件中获取已配置的服务,如下所示:

var myService = new XmlApplicationContext("assembly://MyAssembly/MyNamespace/MyService.config").GetObject( "myService") as MyService;

通常这似乎工作正常,但在这种情况下,因为它在静态方法内部导致内存泄漏,我想了解为什么所以我将来避免这种事情。该方法首先不应该是静态的,但这是另一个问题。通常,我避免这样做,并通过web.config直接将我的服务注入到ASP.Net页面,但在这种情况下它是权宜之计,所以不要打扰告诉我,我做错了,我知道。 - )

最高

1 个答案:

答案 0 :(得分:0)

如果您有静态方法并保留myService实例句柄,那么它将与Spring.NET的单例映射共享。只要你有参考,应用程序上下文也会坚持下去。虽然这并没有完全解释这种情况,如果内存不断增长,除非你将每个创建的对象保存在静态类中......