Have you incremented the refcount on the variable? If not, try SvREFCNT_inc(my_sv);
Perl does see the variable when you use it to call methods. This in turn makes it vulnerable to garbage collection.
As to how to prevent it from being garbage collected (permanently), I'm not certain, but you might be able to create an empty DESTROY method.UPDATE: won't work
If you want something that perl won't garbage collect, create a circular reference.