メモリ管理でつまづいている、ちょっと挙動がわからない。

やりたいことはこんな感じ。

var mc0:MovieClip = new MovieClip();
addChild(mc0);
var array:Array = []
array.push(mc0);
var mc1 = array[0]

//↓で表示リストから消えるのは無問題
removeChild(mc1);
//↓だとmc0分のメモリは消えないっぽい。
mc1=null;
//↓だとmc0分のメモリは消えるっぽい。
array[0] = null;

参照先を操作すれば、表示リストからは消せる。
でも、メモリを開放できないのがなんだか気持ち悪い。
参照で渡した場合、参照先をnullにしても、参照元はnullにならないってこと?
配列に格納するのも参照渡しと同じ感覚だと思っていたけど、違うってこと?
このあたりは今度えらい先生と会う機会があるときに教えてもらおう・・・

[追記]
コメントにて教えて頂きました。
参照で渡した場合、参照先をnullにしても、参照元はnullにならない、でOK。
参照先との関係が切れるだけ、ということだそうです。