<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
That's interesting, and quite unintuitive! maybe someone with better understanding of VTK's inner work can offer an explanation!<br><br>Xiaofeng<br><br><BR><div><hr id="stopSpelling">Date: Wed, 6 Jul 2011 10:25:55 -0400<br>Subject: Re: [vtkusers] Delete actor and release memory<br>From: nicolas.lists@gmail.com<br>To: xf10036@hotmail.com<br>CC: sebastien.jourdain@kitware.com; vtkusers@public.kitware.com<br><br><div><b><u>Actor:</u></b></div>create -> ref count == 1<div>add to renderer -> ref count == 2</div><div>remove from renderer -> ref count == 1<br><div>delete -> <font color="#ff0000">ref count == 1576215064, -304508392, etc.</font></div>
<div><font color="#ff0000"><br></font></div><div><b><u>PolyData:</u></b></div><div>create -> ref count == 1</div><div>add to mapper -> ref count == 3</div>
<div>add mapper to actor, add actor to renderer, render -> ref count == 5</div><div>remove actor from renderer, delete actor -> ref count == 3</div><div>delete -> <span style="color: rgb(255, 0, 0);">ref count == 52101520, -304508392, etc.</span></div>
<div><span style="color: rgb(255, 0, 0);"><br></span></div><div>Something interesting I noticed is that if I do the same, without using the renderer (adding/removing actors), the polydata ref count looks fine:</div><div><br>
</div><div><div><b><span style="font-weight: normal;" class="ecxApple-style-span"><div style="text-decoration: underline;">
<b><u>Actor:</u></b></div>create -> ref count == 1<div><div>delete -> <font color="#ff0000">ref count == 1576215064, -304508392, etc.</font></div><div><font color="#ff0000"><br>
</font></div><div><b><u>PolyData:</u></b></div><div>create -> ref count == 1</div><div>add to mapper -> ref count == 3</div>
</div></span></b><b><span style="font-weight: normal;" class="ecxApple-style-span"><div style="display: inline !important;"><div style="display: inline !important;">delete related actor -> ref count == 3</div>
</div></span></b></div><div><b><span style="font-weight: normal;" class="ecxApple-style-span"><div style="display: inline !important;"><div style="display: inline !important;">delete -> <span style="color: rgb(255, 0, 0);">ref count == 0</span></div>
</div></span></b><b><span style="font-weight: normal;" class="ecxApple-style-span"></span></b></div></div><div><br></div>
<div><br></div><div>I tried the vtk master and 5.6.1 tag from github.</div>
<div><br></div><div>Thanks</div><div><br></div><div><br><div class="ecxgmail_quote">On Tue, Jul 5, 2011 at 6:28 PM, Xiaofeng Z <span dir="ltr"><<a href="mailto:xf10036@hotmail.com">xf10036@hotmail.com</a>></span> wrote:<br>
<blockquote style="padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="ecxgmail_quote">
<div dir="ltr">
<div dir="ltr">
<div style='color: rgb(0, 0, 0); font-family: "Calibri"; font-size: 12pt;'>
<div>Does the memory location pointed by variable actor still contain a valid
object (e.g. reference count > 0) after actor->Delete()? If not,
then memory used by actor should have been released.</div>
<div style='color: rgb(0, 0, 0); font-family: "Calibri"; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; display: inline;'>
<div style="font: 10pt/normal tahoma; font-size-adjust: none; font-stretch: normal;">
<div><font size="3" face="Calibri"></font> </div>
<div><font size="3" face="Calibri">xz</font></div>
<div> </div>
<div style="background: rgb(245, 245, 245);">
<div><b>From:</b> <a title="nicolas.lists@gmail.com" href="mailto:nicolas.lists@gmail.com">Nicolas Rannou</a> </div>
<div><b>Sent:</b> Tuesday, July 05, 2011 9:10 AM</div>
<div><b>To:</b> <a title="sebastien.jourdain@kitware.com" href="mailto:sebastien.jourdain@kitware.com">Sebastien Jourdain</a> </div>
<div><b>Cc:</b> <a title="vtkusers@public.kitware.com" href="mailto:vtkusers@public.kitware.com">vtkusers@public.kitware.com</a> </div>
<div><b>Subject:</b> Re: [vtkusers] Delete actor and release
memory</div></div></div>
<div> </div></div>
<div style='color: rgb(0, 0, 0); font-family: "Calibri"; font-size: small; font-style: normal; font-weight: normal; text-decoration: none; display: inline;'><div><div></div><div>Hi
Sebastien,
<div> </div>
<div>Yes, I don't delete it on purpose.
<div> </div>
<div>I would like to keep the polydata in memory but delete everything else
which is related to the visualization in order to decrease the memory
usage!</div>
<div> </div>
<div>Thanks</div>
<div> </div>
<div>Nicolas</div>
<div>
<div> </div>
<div class="ecxgmail_quote">On Sat, Jul 2, 2011 at 11:19 PM, Sebastien Jourdain <span dir="ltr"><<a href="mailto:sebastien.jourdain@kitware.com">sebastien.jourdain@kitware.com</a>></span>
wrote:<br>
<blockquote style="padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="ecxgmail_quote">You never deleted the sphere.<br>
<div>
<div></div>
<div><br>On Tue, Jun 28, 2011 at 5:56 PM, Nicolas Rannou <<a href="mailto:nicolas.lists@gmail.com">nicolas.lists@gmail.com</a>>
wrote:<br>> Hi all,<br>> I would like to delete/remove actors from my
rendering window to free<br>> memory.<br>> The issue is that the memory
usage doesn't decrease after removing/deleting<br>> the actors.<br>>
From my understanding, both following pseudo-codes should use the same<br>>
amount of memory.<br>> But,<br>> The first one uses: 15 Mb for 1000
spheres:<br>> The second uses: 90 Mb for 1000 spheres:<br>> How should I
proceed in the 2nd case, to get back to the "original" memory<br>> usage
without actor?<br>> Thanks,<br>><br>> Nicolas<br>>
______________________________<br>> 15 Mb<br>>
______________________________<br>> //Create a sphere<br>>
vtkSphereSource* sphere = new ...<br>>
______________________________<br>> 90 Mb<br>>
______________________________<br>> //Create sphere<br>>
vtkSphereSource* sphere = new ...<br>> // mapper<br>> vtkMapper* mapper
...<br>> mapper->SetInput( sphere->GetOutput() )<br>> //
actor<br>> vtkActor* actor...<br>> actor->SetMapper(mapper)<br>>
mapper->Delete()<br>> // Add and remove actor<br>>
renderer->AddActor(actor)<br>> renderer->RemoveActor(actor)<br>>
// Delete actor<br>> actor->Delete()<br>>
______________________________<br>>
______________________________<br>><br>><br></div></div>>
_______________________________________________<br>> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>><br>> Visit other Kitware
open-source projects at<br>> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>><br>>
Please keep messages on-topic and check the VTK FAQ at:<br>> <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>><br>> Follow this
link to subscribe/unsubscribe:<br>> <a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>><br>><br></blockquote></div>
<div> </div></div></div>
</div></div>
<BR><hr><div>
_______________________________________________<br>Powered by
<a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br><br>Visit other Kitware open-source projects at
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br><br>Please keep messages
on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br><br>Follow
this link to
subscribe/unsubscribe:<br><a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br></div><BR></div></div></div></div>
</blockquote></div><br></div></div></div>                                            </div></body>
</html>