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.

Reply via email to