首页 > 应用开发 > > c# RabbitMQ 内存一直增长,急
using Microsoft.Practices.Unity.Configuration;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using Unity;
using Unity.Resolution;
namespace Utils
{
///
/// 服务定位器类,做依赖注入解析
///
public class ServiceLocator
{
private readonly IUnityContainer container;
public ServiceLocator()
{
var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
container = new UnityContainer();
section.Configure(container);
}
public static ServiceLocator Instance
{
get { return new ServiceLocator(); }
}
public T GetService<T>()
{
return container.Resolve<T>();
}
public T GetService<T>(object overridedarguments)
{
var overrides = GetParameterOverride(overridedarguments);
return container.Resolve<T>(overrides.ToArray());
}
public object GetService(Type serviectype)
{
return container.Resolve(serviectype);
}
public object GetService(Type servicetype, object overridedarguments)
{
var overrides = GetParameterOverride(overridedarguments);
return container.Resolve(servicetype, overrides.ToArray());
}
private IEnumerable<ParameterOverride> GetParameterOverride(object overridearguments)
{
var overrides = new List<ParameterOverride>();
var argumenttype = overridearguments.GetType();
argumenttype.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)
.ToList()
.ForEach(property =>
{
var propertyvalue = property.GetValue(overridearguments, null);
var propertyname = property.Name;
overrides.Add(new ParameterOverride(propertyname, propertyvalue));
});
return overrides;
}
public T GetService<T>(ParameterOverrides parameters)
{
return container.Resolve<T>(parameters);
}
}}
while(true)
{
//消息总线服务器地址
IEventBus result = ServiceLocator.Instance.GetService
new ParameterOverrides {
{ "connectionFactory",connectionFactory },
{ "context", ServiceLocator.Instance.GetService
{ "exchangeName","s" },
{ "exchangeType","direct" },
{ "queueName","ss" },
{ "publisherorconsumer", 1 },
{ "autoAck",true}
});
}
现在的情况是,内存一直不停的增加,检查是由于循环里的这段代码产生的,请问怎么改代码,才能在每次用完 result后,销毁 result ,从而使内存不增长,保存平稳
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/623/viewspace-3161003/ ,如需转载,请注明出处,否则将追究法律责任。