Мне необходимо загрузить локальный MP3 файл в объект Sound. Я использую
FileReference для выбора файла и получения ByteArray звука и стороннюю библиотеку
MP3FileReferenceLoader для конвертации звука из ByteArray в Sound, которая программно делает SWF файл с [Embed] и возвращает объект Sound.
Проблема в том, что когда я пишу:

Код AS3:
_track.mp3Sound = event.sound;
То есть сохраняю ссылку на звук в экземлпяр класса TrackVO.
То память выделенная под SWF файл не освобождается.
Но если убрать эту строку, то все будет нормально. Память под SWF выделится и освободится при получении объекта Sound. Смотрите скриншоты с памятью.
Как это исправить?
Главный класс:

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.FileFilter;
import flash.net.FileReference;
import org.audiofx.mp3.MP3FileReferenceLoader;
import org.audiofx.mp3.MP3SoundEvent;
public class Test extends Sprite
{
private var _fr:FileReference;
private var _track:TrackVO;
private var _mp3Loader:MP3FileReferenceLoader;
public function Test()
{
_mp3Loader = new MP3FileReferenceLoader();
_mp3Loader.addEventListener(MP3SoundEvent.COMPLETE, onComplete);
_fr = new FileReference();
_fr.addEventListener(Event.SELECT, onFileSelect);
stage.addEventListener(MouseEvent.CLICK, onClickStage);
}
private function onFileSelect(event:Event):void
{
_mp3Loader.getSound(_fr);
}
private function onClickStage(event:MouseEvent):void
{
_fr.browse([new FileFilter("MP3 Files", "*.mp3")]);
}
private function onComplete(event:MP3SoundEvent):void
{
_track = new TrackVO();
_track.mp3Sound = event.sound; // Если убрать эту строку то все будет ок, но мне нужно хранить звук именно в _track.
_track.mp3Bytes = _fr.data;
_fr.removeEventListener(Event.SELECT, onFileSelect);
_fr = null;
}
}
}
Файл хранящий звуковые данные:

Код AS3:
package
{
import flash.media.Sound;
import flash.utils.ByteArray;
public class TrackVO
{
public var mp3Sound:Sound;
public var mp3Bytes:ByteArray;
}
}