На самом деле здесь вряд ли запихивание лоадеров в пул что-то даст
(раз в 10 секунд!, если бы 10 раз в секунду было - и то мало - сам по себе URLLoader весит очень мало - память забивают загружаемые данные)
Если у данных есть тяжелый контейнер - можно попробовать переиспользовать его, но что-то сомневаюсь.
Т.е. забить - не самый плохой вариант - при нехватке памяти она очистится.
Однако, как сделать пул лоадеров (не тестировал):

Код AS3:
public class NameClass
{
private var _loaders:Array = [];
private function getLoader():URLLoader
{
if (_loaders.length > 0) return _loader.pop();
return new URLLoader();
}
private function disposeLoader(loader:URLLoader):void
{
_loaders.push(loader);
}
private var variables:URLVariables;
private var urlRequest:URLRequest;
private var loader:URLLoader;
private var timer:Timer = new Timer(10000, 0);
private var error:String;
public function NameClass()
{
timer.addEventListener(TimerEvent.TIMER, request);
timer.start();
}
public function stop():void {
timer.stop();
}
public function start():void {
timer.start();
}
public function get error1():String {
return error;
}
private function request(e:TimerEvent):void {
variables = new URLVariables();// <- создание объекта, но он не тяжелее лоадера
variables.md5 = MD5.hash("SomeString");
variables.data = "data";// <- может здесь как раз и передаются большие объемы, но как их повторно использовать?
urlRequest = new URLRequest("http://192.168.10.50/test.php");//<- еще один создающийся объект, а мы все на лоадере экнономим
urlRequest.data = variables;
urlRequest.method = URLRequestMethod.POST
loader = getLoader();// Достаем из пула
loader.addEventListener(Event.COMPLETE, update);
loader.addEventListener(IOErrorEvent.IO_ERROR, io_error);
try {
loader.load(urlRequest);
}
catch (error:Error) {
loader.removeEventListener(Event.COMPLETE, update);
loader.removeEventListener(IOErrorEvent.IO_ERROR, io_error);
}
}
private function update(e:Event):void {
loader.removeEventListener(Event.COMPLETE, update);
loader.removeEventListener(IOErrorEvent.IO_ERROR, io_error);
//Обработка <-- вот здесь мы достаем, наверное, самые тяжелые и забивающие память данные, но для них нет повторно исп. контейнера
disposeLoader(loader);//ложим обратно в пул
}
private function io_error(e:IOErrorEvent):void {
e.currentTarget.removeEventListener(Event.COMPLETE, update);
e.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR, io_error);
error = "Ошибка I/O";
this.stop();
// Все! кина не будет - рубим ссылки на лоадер(ы) в пуле
_loaders.length = 0;
}
}
Пулы хорошо себя показываются на работе с BitmapData, например Вы тупо чтобы обработать графику создаете кучу битмап дат одинакового размера, время жизни которых - только время обработки - вот их лучше брать из пула, тогда вместо 100 будет созданно, например 5,
т.е. пулы применяются для объектов, создается которых много, а одновременно используется мало, и, главное, нужно знать, когда объект будет не нужен, т.е. когда вызывать "disposeLoader", ну и нужна возможность переиспользования (тяжело использовать битмапдату, которую достал из пула, если она неподходящего размера).