Still chasing logout memory leak. Putting in small changes and temporary light verbosity to this end

This commit is contained in:
Justin Clarke Casey
2008-02-08 22:39:08 +00:00
parent b63c267f0b
commit f05f583613
6 changed files with 39 additions and 12 deletions

View File

@@ -53,7 +53,7 @@ namespace OpenSim.Region.ClientStack
{
~ClientView()
{
m_log.Info("[CLIENTVIEW]: Dstructor called");
System.Console.WriteLine("[CLIENTVIEW]: Destructor called");
}
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
@@ -237,6 +237,10 @@ namespace OpenSim.Region.ClientStack
private void CloseCleanup()
{
m_scene.RemoveClient(AgentId);
//m_log.Info(String.Format("[CLIENTVIEW] Memory pre GC {0}", System.GC.GetTotalMemory(false)));
//m_log.Info(String.Format("[CLIENTVIEW] Memory post GC {0}", System.GC.GetTotalMemory(true)));
// Send the STOP packet
DisableSimulatorPacket disable = (DisableSimulatorPacket)PacketPool.Instance.GetPacket(PacketType.DisableSimulator);
OutPacket(disable, ThrottleOutPacketType.Task);
@@ -264,6 +268,11 @@ namespace OpenSim.Region.ClientStack
m_clientThread.Abort();
}
/// <summary>
/// Close down the client view. This *must* be the last method called, since the last #
/// statement of CloseCleanup() aborts the thread.
/// </summary>
/// <param name="ShutdownCircult"></param>
public void Close(bool ShutdownCircult)
{
// Pull Client out of Region
@@ -273,7 +282,6 @@ namespace OpenSim.Region.ClientStack
if (ShutdownCircult)
OnConnectionClosed(this);
CloseCleanup();
}

View File

@@ -25,6 +25,8 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System;
using System.Net;
using System.Net.Sockets;
using libsecondlife;
@@ -133,13 +135,17 @@ namespace OpenSim.Region.ClientStack
//m_scene.ClientManager.CloseAllAgents(circuitcode);
}
/// <summary>
/// Completely close down the given client.
/// </summary>
/// <param name="client"></param>
public virtual void CloseClient(IClientAPI client)
{
//m_log.Info("PacketServer:CloseClient()");
m_log.Info("PacketServer:CloseClient()");
CloseCircuit(client.CircuitCode);
m_scene.ClientManager.Remove(client.CircuitCode);
client.Close(false);
m_scene.ClientManager.Remove(client.CircuitCode);
}
}
}