Hi VTK Team
I encounter a memory leak when use the code below, RAM utilization is going up.
It seems that vtkRenderWindow is not freed correctly. If I put out of the loop vtkRenderwindow, everything is ok.
Also, It seems to be an old problem as you can see here (RAM blow out when looping vtkRenderWindow render). This problem is still present on the last release.
def test_memory_leak():
colors = vtkNamedColors()
# create source
source = vtkSphereSource()
source.SetCenter(0, 0, 0)
source.SetRadius(5.0)
source.SetPhiResolution(30)
source.SetThetaResolution(30)
# mapper
mapper = vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
# actor
actor = vtkActor()
actor.GetProperty().SetColor(colors.GetColor3d('IndianRed'))
actor.GetProperty().SetSpecular(0.6)
actor.GetProperty().SetSpecularPower(30)
actor.SetMapper(mapper)
for time in range(200):
# create a rendering window and renderer
ren = vtkRenderer()
renWin = vtkRenderWindow()
renWin.AddRenderer(ren)
renWin.SetWindowName('Screenshot')
# create a renderwindowinteractor
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
#renwin offscreen
renWin.SetOffScreenRendering(1)
# assign actor to the renderer
ren.AddActor(actor)
ren.SetBackground(colors.GetColor3d('MistyRose'))
renWin.Render()
# screenshot code:
w2if = vtkWindowToImageFilter()
w2if.SetInput(renWin)
w2if.SetInputBufferTypeToRGB()
w2if.ReadFrontBufferOff()
w2if.Update()
writer = vtkPNGWriter()
writer.SetFileName('file%02d.png' % time)
writer.SetInputConnection(w2if.GetOutputPort())
writer.Write()
test_memory_leak()
I am on macOsX M1, using rosetta system (x86_64), python 3.9.13, vtk 9.2.5