So I have the basics of a unit test that loads and unloads a bunch of
images and force garbage collection, however, it seems that once the
memory is claimed by the process it is never released.
class PygletTest(unittest.TestCase):
def test_load(self):
def get_memory():
return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1000
print("Memory at start", get_memory())
for fname in glob.glob("data/items/_test_assets/*.png"):
image = pyglet.image.load(fname)
print("after loading",fname,get_memory())
image = None
gc.collect()
print("Memory after setting image to None and calling
gc.collect()",get_memory())
Outputs as:
Memory at start: 51.516
after loading data/items/_test_assets/background_v2.png 63.104
after loading data/items/_test_assets/background.png 69.8
after loading data/items/_test_assets/background_v1.png 69.8
after loading data/items/_test_assets/background_sky.png 75.288
after loading data/items/_test_assets/left.png 75.288
after loading data/items/_test_assets/idle1.png 102.216
after loading data/items/_test_assets/background_ground.png 102.216
after loading data/items/_test_assets/right.png 102.216
Memory after setting image to None and calling gc.collect() 102.216
I understand that garbage collection in python is a bit of a dark art
but I'd expect memory load to go back down to around 51mb, instead it
stays at 102mb.
Is the video memory the problem?
On 7 January 2015 at 12:26, Luke Miller <[email protected]> wrote:
> Hi,
>
> I have a slow memory leak in my pyglet 1.2 program and I have no idea
> how to debug it. I do a lot of Sprite creation and destruction. The
> two pyglet classes I use are Sprite and Animation.
>
> create:
> obj._animation = pyglet.image.Animation(frames)
> obj._sprite = pyglet.sprite.Sprite(obj._animation, **kwargs)
>
> destroy:
> if obj._sprite:
> obj._sprite.delete()
> obj._animation = None
> obj._sprite = None
>
> However after several thousand of these loads and unloads the memory
> use is over 8gb even though inspection of my object list shows only
> the currently in-use objects (eg five or six objects) with sprites
> attached.
>
> I'm not using Batch and gc.garbage shows an empty list.
>
> So yeah, not sure where to start debugging this stuff, any pointers
> appreciated!
>
> Regards,
> Luke
--
You received this message because you are subscribed to the Google Groups
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/d/optout.