2012-07-03 4 views
1

BitmapData 객체가 메모리에서 완전히 제거되기를 원하는 모든 BitmapData에 대해 BitmapData.dispose()를 호출해야합니까? 그렇지 않으면 BitmapData 객체가 가비지 수집되는 즉시 해당 버퍼가 해제됩니까?AS3 : BitmapData.dispose()를 호출해야합니까?

답변

8

궁극적으로 BitmapData은 가비지 수집으로 처리됩니다.

BitmapData.dispose()을 호출하면 메모리가 즉시 해제되므로 프레임 기반 애니메이션에서 비트 맵 데이터를 많이 사용하는 경우 성능이 향상 될 수 있습니다. 비트 맵 데이터는 상당한 양의 메모리를 빠르게 소비 할 수 있습니다.

BitmapData, from the ActionScript 3.0 Reference for the Adobe Flash Platform

BitmapData.dispose()는 실제 비트 맵 데이터에 의해 점유 된 메모리를 해제 즉시 (비트 맵 메모리 64MB의 최대 소비 할 수있다). BitmapData.dispose()를 사용하여 을 사용한 후에는 BitmapData 객체를 더 이상 사용할 수 없으므로 BitmapData 객체에서 함수를 호출하면 Flash 런타임에서 예외가 throw됩니다. 그러나 BitmapData.dispose()는 BitmapData 객체를 수집하지 않습니다 (약 128 바이트). 실제 비트 맵 데이터 객체에 의해 점유 된 메모리 은 가비지 수집기가 BitmapData 객체를 수집 할 때 이 릴리스 될 때 해제됩니다.

+0

왜 그런지 모르겠지만 dispose()와 같이 호출하면 :'bitlayer.bitmapData.dispose(); bitmap.bitmapData = 새 BitmapData (너비, 높이, true, 0); '여러 번 플래시 메모리가 빠르게 커집니다. 대신 null을 설정하면 :'bitlayer.bitmapData = null; bitmap.bitmapData = 새 BitmapData (너비, 높이, true, 0); '플래시 메모리가 전혀 증가하지 않습니다. 나는'dispose()'에 버그가 있다고 생각한다. – marbel82