Memory isn't guaranteed (or expected) to be reclaimed immediately. To see if you have a real memory leak, try callying air.System.gc() after setting snd to null, to force garbage collection to occur.
Thank you! Forced collection reclaimed the memory
I have 4GB of memory, so it seems that collection never took place. I noticed that after couple of hour of continuous playing, my app consumed 300MB. It seems I should force collection every now and then.
I think it's generally best to let the garbage collector do its own thing. The System.gc() call is really for debugging such issues.
See http://www.adobe.com/devnet/air/articles/air_performance.html for a little more on memory usage.
Normally I would agree about letting the gc collect. However, in my case, memory usage increases to 300 MB after 8 hours of playing. It seems that GC didn't collect or I have some more leaks.I didn't have the time to investigate this some more.
However, if gc doesn't collect for such a long time (possibly because there is more than enough free memory), I would prefer to invoke collection myself. If for no other reason, than because it doesn't look good for the end user to have perception that my app is using 300 MB when other applications are using only couple of MB up to 100 MB in the worst cases.