diff options
author | Justin Clark-Casey (justincc) | 2012-02-15 01:45:25 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-02-15 01:45:25 +0000 |
commit | ebe5e1731d24e68ec7a8aa61a397f5febc1c2662 (patch) | |
tree | e735ca22a967b6fc82e36678042dbc53db5bfee9 /OpenSim/Region/Framework/Scenes/SceneGraph.cs | |
parent | Fix: get embedded objects from Notecard fails with activated FreeSwitchVoiceM... (diff) | |
download | opensim-SC_OLD-ebe5e1731d24e68ec7a8aa61a397f5febc1c2662.zip opensim-SC_OLD-ebe5e1731d24e68ec7a8aa61a397f5febc1c2662.tar.gz opensim-SC_OLD-ebe5e1731d24e68ec7a8aa61a397f5febc1c2662.tar.bz2 opensim-SC_OLD-ebe5e1731d24e68ec7a8aa61a397f5febc1c2662.tar.xz |
In ObjectTortureTests, run garbage collector on Teardown and run scene loop update when scene objects have been deleted.
At least on mono 2.6.4, running GC.Collect() is not guaranteed to force gc of all objects when run in the same method where those objects had references.
Therefore, GC.Collect() is now being done in the per-script teardown of ObjectTortureTests.
In addition, scene loop update is being run after garbage collection in order to clean out the viewer update list of scene objects in the SceneGraph.
These measures mean that scene objects/parts are now garbage collected after a test run if deleted from the scene, resulting in a much better memory usage report (though probably still not very accurate).
However, deletion takes a very long time - what's really needed is to find out now why the entire scene isn't being GC'd by this measure.
This change hasn't yet been applied to the other stress tests.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 693a79e..e66678a 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -359,7 +359,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
359 | m_log.ErrorFormat( | 359 | m_log.ErrorFormat( |
360 | "[SCENEGRAPH]: Tried to add scene object {0} to {1} with illegal UUID of {2}", | 360 | "[SCENEGRAPH]: Tried to add scene object {0} to {1} with illegal UUID of {2}", |
361 | sceneObject.Name, m_parentScene.RegionInfo.RegionName, UUID.Zero); | 361 | sceneObject.Name, m_parentScene.RegionInfo.RegionName, UUID.Zero); |
362 | 362 | ||
363 | return false; | 363 | return false; |
364 | } | 364 | } |
365 | 365 | ||
@@ -368,12 +368,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
368 | // m_log.DebugFormat( | 368 | // m_log.DebugFormat( |
369 | // "[SCENEGRAPH]: Scene graph for {0} already contains object {1} in AddSceneObject()", | 369 | // "[SCENEGRAPH]: Scene graph for {0} already contains object {1} in AddSceneObject()", |
370 | // m_parentScene.RegionInfo.RegionName, sceneObject.UUID); | 370 | // m_parentScene.RegionInfo.RegionName, sceneObject.UUID); |
371 | 371 | ||
372 | return false; | 372 | return false; |
373 | } | 373 | } |
374 | 374 | ||
375 | // m_log.DebugFormat( | 375 | // m_log.DebugFormat( |
376 | // "[SCENEGRAPH]: Adding scene object {0} {1}, with {2} parts on {3}", | 376 | // "[SCENEGRAPH]: Adding scene object {0} {1}, with {2} parts on {3}", |
377 | // sceneObject.Name, sceneObject.UUID, sceneObject.Parts.Length, m_parentScene.RegionInfo.RegionName); | 377 | // sceneObject.Name, sceneObject.UUID, sceneObject.Parts.Length, m_parentScene.RegionInfo.RegionName); |
378 | 378 | ||
379 | SceneObjectPart[] parts = sceneObject.Parts; | 379 | SceneObjectPart[] parts = sceneObject.Parts; |
@@ -409,7 +409,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
409 | 409 | ||
410 | lock (SceneObjectGroupsByFullID) | 410 | lock (SceneObjectGroupsByFullID) |
411 | SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; | 411 | SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; |
412 | 412 | ||
413 | lock (SceneObjectGroupsByFullPartID) | 413 | lock (SceneObjectGroupsByFullPartID) |
414 | { | 414 | { |
415 | foreach (SceneObjectPart part in parts) | 415 | foreach (SceneObjectPart part in parts) |