Add start GC memory and end GC memory to object stress test printouts.
This illustrates that references to Scene, SOG, etc. are not currently being released when a stress test ends (or at regression test end in general). This means even the current stress tests take much more memory than they need, a problem that will have to be addressed.iar_mods
							parent
							
								
									1f402fdf5e
								
							
						
					
					
						commit
						c87751a822
					
				| 
						 | 
				
			
			@ -567,7 +567,8 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
 | 
			
		||||
//        ~SceneObjectGroup()
 | 
			
		||||
//        {
 | 
			
		||||
//            m_log.DebugFormat("[SCENE OBJECT GROUP]: Destructor called for {0}, local id {1}", Name, LocalId);
 | 
			
		||||
//            //m_log.DebugFormat("[SCENE OBJECT GROUP]: Destructor called for {0}, local id {1}", Name, LocalId);
 | 
			
		||||
//            Console.WriteLine("Destructor called for {0}, local id {1}", Name, LocalId);
 | 
			
		||||
//        }
 | 
			
		||||
 | 
			
		||||
        #region Constructors
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,6 +47,11 @@ namespace OpenSim.Tests.Common.Mock
 | 
			
		|||
                   dumpAssetsToFile, config, simulatorVersion)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ~TestScene()
 | 
			
		||||
        {
 | 
			
		||||
            Console.WriteLine("TestScene destructor called for {0}", RegionInfo.RegionName);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Temporarily override session authentication for tests (namely teleport).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -131,7 +131,7 @@ namespace OpenSim.Tests.Torture
 | 
			
		|||
 | 
			
		||||
            TimeSpan elapsed = DateTime.Now - start;
 | 
			
		||||
//            long processMemoryAlloc = process.PrivateMemorySize64 - startProcessMemory;
 | 
			
		||||
            long processGcAlloc = GC.GetTotalMemory(false) - startGcMemory;
 | 
			
		||||
            long endGcMemory = GC.GetTotalMemory(false);
 | 
			
		||||
 | 
			
		||||
            for (int i = 1; i <= objectsToAdd; i++)
 | 
			
		||||
            {
 | 
			
		||||
| 
						 | 
				
			
			@ -141,9 +141,19 @@ namespace OpenSim.Tests.Torture
 | 
			
		|||
                    string.Format("Object {0} could not be retrieved", i));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // This does not work to fire the SceneObjectGroup destructors - something else is hanging on to them.
 | 
			
		||||
//            scene.DeleteAllSceneObjects();
 | 
			
		||||
 | 
			
		||||
            Console.WriteLine(
 | 
			
		||||
                "Took {0}ms, {1}MB to create {2} objects each containing {3} prim(s)",
 | 
			
		||||
                Math.Round(elapsed.TotalMilliseconds), processGcAlloc / 1024 / 1024, objectsToAdd, primsInEachObject);
 | 
			
		||||
                "Took {0}ms, {1}MB ({2} - {3}) to create {4} objects each containing {5} prim(s)",
 | 
			
		||||
                Math.Round(elapsed.TotalMilliseconds),
 | 
			
		||||
                (endGcMemory - startGcMemory) / 1024 / 1024,
 | 
			
		||||
                endGcMemory / 1024 / 1024,
 | 
			
		||||
                startGcMemory / 1024 / 1024,
 | 
			
		||||
                objectsToAdd,
 | 
			
		||||
                primsInEachObject);
 | 
			
		||||
 | 
			
		||||
            scene = null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -107,6 +107,8 @@ namespace OpenSim.Tests.Torture
 | 
			
		|||
            m_expectedChatMessages = scriptsToCreate;
 | 
			
		||||
            int startingObjectIdTail = 0x100;
 | 
			
		||||
 | 
			
		||||
            GC.Collect();
 | 
			
		||||
 | 
			
		||||
            for (int idTail = startingObjectIdTail;idTail < startingObjectIdTail + scriptsToCreate; idTail++)
 | 
			
		||||
            {
 | 
			
		||||
                AddObjectAndScript(idTail, userId);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue