If it goes up to 500MB and no more then it's fine. That's how .NET works. Your RunUO process is granted some amount of RAM by default. WIthin that amount you have some useful data like current items and mobiles, and some buffer for so called 'garbage', i.e. objects created, used and deleted. When grabage amount becomes close to granted RAM the Garbage Collector stops your application and removes the garbage, i.e. marks that memory as free. But it's hidden for Windows Process Explorer. It still reports that application uses those 500MB. If you have Windows7/Vista you can use Performance Monitor counters to see what really happens inside RunUO process.
In case of memory usage spikes, for example large event on your shard which requires a lot of RAM, RunUO requests more memory from OS and memory usage jumps to 1024MB or whatever it needs. I'm not sure if the memory will be returned to OS after event, so using your system care tool can be nice here.
If you see that you have 500MB RAM consumption in an hour, 1000 in two and 2000 in four then it's definitely memory leak. But 500MB in an hour and then nothing - it's okay. That's what you pay to avoid manual memory management like in C, C++, Delphi and so on.