On Friday, 17 June 2016 at 01:51:41 UTC, Joerg Joergonson wrote:
Are you keeping multiple buffers of the image around? A trueimage, a memoryimage, an opengl texture

MemoryImage and TrueImage are the same thing, memory is just the interface, true image is the implementation.

OpenGL texture is separate, but it references the same memory as a TrueColorImage, so it wouldn't be adding.


You might have pinned temporary buffers though. That shouldn't happen on 64 bit, but on 32 bit I have seen it happen a lot.

When I do a bare loop minimum project(create2dwindow + event handler) I get 13% cpu(on 8-core skylake 4ghz) and 14MB memory.

I haven't seen that here.... but I have a theory now: you have some pinned temporary buffer on 32 bit (on 64 bit, the GC would actually clean it up) that keeps memory usage near the collection boundary.

Then, a small allocation in the loop - which shouldn't be happening, I don't see any in here... - but if there is a small allocation I'm missing, it could be triggering a GC collection cycle each time, eating CPU to scan all that wasted memory without being able to free anything.

If you can run it in the debugger and just see where it is by breaking at random, you might be able to prove it.

That's a possible theory.... I can reproduce the memory usage here, but not the CPU usage though. Sitting idle, it is always <1% here (0 if doing nothing, like 0.5% if I move the mouse in the window to generate some activity)

I need to get to bed though, we'll have to check this out in more detail later.


Thanks! Also, when I try to run the app in 64-bit windows, RegisterClassW throws for some reason ;/ I haven't been able to figure that one out yet ;/

errrrrr this is a mystery to me too... a hello world on 64 bit seems to work fine, but your program tells me error 998 (invalid memory access) when I run it. WTF, both register class the same way.

I'm kinda lost on that.

Reply via email to