C
Chuck Remes
I should have noted that the code snippet comes from ruby 1.9.1 p-376.
I have discovered the root cause of this problem. The good news is that it isn't a problem with the Ruby WIN32OLE implementation.
I don't know if all COM servers work this way, but the specific application I am using memory-maps all WIN32OLE_EVENT data parameters. The space consumed by this memory-mapped data is registered in the ruby process and not against the COM server.
Since COM objects do memory management via reference counting, I had to specifically release the data given to my event callbacks. I didn't know this was a required step (the COM server API docs are silent on this issue) so I was slowly leaking these references every time my event callbacks were fired. I have now corrected my misuse of this COM server's API and all is well.
cr