[osg-users] Remove all LOD children

Alberto Luaces aluaces at udc.es
Fri May 13 08:23:42 PDT 2016


I think some facts must be made clear:

* You cannot control when the OpenGL driver releases the memory it
  claimed in a previous instant.
  
* You cannot control when the operating system claims back the memory
  pages that a process requested, and in addition, many times it is
  simply not possible to do it due to memory fragmentation.
  
* At most, what you can do is to check that your program is not leaking
  memory with a special tool, as the one I recommended (valgrind for
  CPUs, other tools for GPUs).

System memory tools are completely unreliable for this specific purpose.

Bruno Oliveira writes:

> I tried removing the children with m_rootNode->removeChildren(0,
> m_rootNode->getNumChildren());
> but this results in some memory being still allocated.
>
> After that, I move the mouse around a bit in the clean scene, and the
> memory starts being freed. However, It never gets to the initial
> value, there is always some memory floating around.
>
> 2016-05-13 15:16 GMT+01:00 Alberto Luaces
> <aluaces at udc.es>:
>
>     Bruno,
>     
>     if you read the source code, you will see that the LOD uses the
>     same
>     scheme for storing nodes as a Group: just a vector of ref_ptr that
>     will
>     be unallocated when destroyed.
>     
>     Maybe you can place some breakpoints at the destructors on the
>     debugger
>     and see what is happening.
>     
>     Bruno Oliveira writes:
>     
>     > Thank you for your answer. However, since I'm using a LOD, I
>     think it
>     > is not properly removing my data. At least the memory is still
>     > allocated.
>     > If I manually iterate over all nodes and delete them by myself,
>     some
>     > memory is freed, but not all!
>     >
>     > 2016-05-13 14:58 GMT+01:00 Alberto Luaces
>     >
>     >
>     
>     
>     > Bruno Oliveira writes:
>     >
>     > > At some point I want to completely wipe out my scene. How can
>     I
>     > delete
>     > > all nodes?
>     >
>     > If you want to wipe a node and all its descendants, just delete
>     > the
>     > parent node. That is what reference counting is all about.
>     
>     --
>     Alberto
>     
>     _______________________________________________
>     osg-users mailing list
>     osg-users at lists.openscenegraph.org
>     http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>    
>     
>
>

-- 
Alberto




More information about the osg-users mailing list