You are making an awful lot of assertions there.
And you've not said what is generating the queries / consuming the data.
While it is possible that MySQL has an undocumented memory leak - thats one problem which I have never experienced with it.
The first thing I would be doing is to look at top sorted by memory to see what's using lots of memory / whats grabbing more memory. I suspect you may find its the clients not releasing result sets correctly that may be causing the problem.