* Unregister Mono.Addins event handlers in PluginLoader.Dispose() and always handle PluginLoader with the using pattern. This freed up 121,634,796 bytes on my system

* Avoid allocating an Action<IClientAPI> object every round of the OutgoingPacketHandler
* Removed unnecessary semi-colon endings from OpenSim.ini.example [InterestManagement] section
This commit is contained in:
John Hurliman
2009-10-23 13:14:29 -07:00
parent c749cf0061
commit a41cd1d069
7 changed files with 44 additions and 29 deletions

View File

@@ -162,11 +162,11 @@ namespace OpenSim
protected virtual void LoadPlugins()
{
PluginLoader<IApplicationPlugin> loader =
new PluginLoader<IApplicationPlugin>(new ApplicationPluginInitialiser(this));
loader.Load("/OpenSim/Startup");
m_plugins = loader.Plugins;
using (PluginLoader<IApplicationPlugin> loader = new PluginLoader<IApplicationPlugin>(new ApplicationPluginInitialiser(this)))
{
loader.Load("/OpenSim/Startup");
m_plugins = loader.Plugins;
}
}
protected override List<string> GetHelpTopics()

View File

@@ -814,6 +814,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// on to en-US to avoid number parsing issues
Culture.SetCurrentCulture();
// Typecast the function to an Action<IClientAPI> once here to avoid allocating a new
// Action generic every round
Action<IClientAPI> clientPacketHandler = ClientOutgoingPacketHandler;
while (base.IsRunning)
{
try
@@ -862,7 +866,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Handle outgoing packets, resends, acknowledgements, and pings for each
// client. m_packetSent will be set to true if a packet is sent
m_scene.ClientManager.ForEachSync(ClientOutgoingPacketHandler);
m_scene.ClientManager.ForEachSync(clientPacketHandler);
// If nothing was sent, sleep for the minimum amount of time before a
// token bucket could get more tokens

View File

@@ -1223,10 +1223,7 @@ namespace OpenSim.Region.Framework.Scenes
if (!m_backingup)
{
m_backingup = true;
System.ComponentModel.BackgroundWorker backupWorker = new System.ComponentModel.BackgroundWorker();
backupWorker.DoWork += delegate(object sender, System.ComponentModel.DoWorkEventArgs e) { Backup(); };
backupWorker.RunWorkerAsync();
Util.FireAndForget(BackupWaitCallback);
}
}
@@ -1238,6 +1235,14 @@ namespace OpenSim.Region.Framework.Scenes
m_eventManager.TriggerOnFrame();
}
/// <summary>
/// Wrapper for Backup() that can be called with Util.FireAndForget()
/// </summary>
private void BackupWaitCallback(object o)
{
Backup();
}
/// <summary>
/// Backup the scene. This acts as the main method of the backup thread.
/// </summary>