私のアプリは何らかの理由で、実行中にますます多くのメモリを使用しています。古いデータをダンプする方法がわかりません。AS3 - 空きメモリ(Loader、BitmapData)?
ローダーを使用して.pngをロードします。 次に、BitmapDataを使用して画像を保存します。その結果、各ピクセルをチェックして結果を保存できます。
これをx回ループします。
私は2番目の実行で起動したときに、私はもう古い情報は必要ありませんが、私のアプリはまだ(イメージがロードされた)データを格納しているように見える。..
ここに私のコードの一部です:
public function loadImage():void{
myLoader = new Loader();
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
if (currentFrame.toString(10).length == 1){
currentFrameURL = txtFolder.text + "\\" + txtImageName.text + txtImageNum.text.substr(0, txtImageNum.text.length - 1) + currentFrame + txtImageType.text;
}
if (currentFrame.toString(10).length == 2){
currentFrameURL = txtFolder.text + "\\" + txtImageName.text + txtImageNum.text.substr(0, txtImageNum.text.length - 2) + currentFrame + txtImageType.text;
}
if (currentFrame.toString(10).length == 3){
currentFrameURL = txtFolder.text + "\\" + txtImageName.text + txtImageNum.text.substr(0, txtImageNum.text.length - 3) + currentFrame + txtImageType.text;
}
trace(currentFrameURL + " sent to loader...");
myLoader.load(new URLRequest(currentFrameURL));
}
public function imageLoaded(event:Event):void{
myLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, imageLoaded);
myBitmapData = new BitmapData(parseInt(txtWidth.text),parseInt(txtHeight.text),false);
myBitmapData.draw(event.currentTarget.content);
//Generate preview of current image being processed..
//myPreviewImage.source = myBitmapData;
labelProgress.text = "Current process: " + (currentFrame + 1) + "/" + (parseInt(txtFrames.text));
for(var y:int=0; y < parseInt(txtHeight.text) ; y++){
for(var x:int=0; x < parseInt(txtWidth.text) ; x++){
currentPixelColor = myBitmapData.getPixel(x,y);
myTabelClass.recordPixel(currentPixelColor);
}
}//ett bilde ferdig scannet og lagret
currentFrame++;
if(currentFrame < parseInt(txtFrames.text)){
myTabelClass.newImg(currentFrame);
trace("sending newImg command: " + currentFrame);
loadImage();
}else{
//All frames done..
//myTabelClass.traceResult();
Alert.show("All images scanned!\n\nClick 'OK' to add new data to XML.", "Images scanned", Alert.OK, this, insertDataToXML);
btnSave.enabled = true;
btnTest1.enabled = true;
}
}
あなたの有用な入力をありがとう! =) 小さい画像(少ないデータ)を使用するとアプリケーションGCが正しく表示されますが、フルフレームの例のフレーム97に達したので一晩の実験に失敗しました。私はそれについてもっと見ていきます。 –
これをマルチスレッドにする方法はありますか? 私は2つのXeonプロセッサを持っています。これは私に16のスレッドを与えます。私のアプリは100%で1スレッドしか使用していません..それは重要ではありませんが、それが可能だった場合は、私のアプリを16倍にスピードアップします。 –
あなたはそれを処分する時間を与えていますか? GCコールには時間がかかりますが、即時ではありません。プロファイラを使用します。 Loader/BitmapDataは私のために大丈夫です。 – ansiart