2009. 2. 6. 14:40ㆍAS3
loader 를 사용해서 이미지 불러오는건 많이 해보셨을꺼라고 생각합니다 ~ ..
loader 를 사용해서 이미지를 불러오게 되면 안보이지만 이넘은 Bitmap 에 담아서 보여주게 되어있을것입니다 ~..
( 아 ~ 뭐지 ? 이 자신감 없는 말투 .. ㅠㅠ )
또한 기본적으로 불러오게 되면 이미지의 용량의 * 3 ~ 4배의 시스템 메모리를 사용한다고 합니다
한마디로 100kb 짜리를 불러오게 되면 3~400kb 의 메모리를 사용한다는 뜻인데 ..
테스트 해본적은 없습니다 ~ ..
( 사실 전 flash 에 있는 memory 메소드를 사용해서 체크하기 때문에 ㅠㅠ 다른것 못믿겠어요 ㅠㅠ )
따라서 그 안에 있는 Bitmap를 삭제 해주면 좀더 메모리가 낮아진걸 확인해본적이 있습니다 .. 흠흠 ..
다만 작은 이미지는 크게 상관이 없지만 큰 이미지 같은 경우 아주 효과를 약간 봅니다 ~ 어헙 ~ ㅋㅋ
제가 요즘 열심히 활동하는 PFG 의 Hika 님이 제 궁금증을 다 풀어주셨습니다 ~ ㅋㅋ
흔히 우리가 사용하는 loader 가 GC 와 친해지게 하는 방법 2가지에 대해서 왜 작동 안하는지에 대해서
궁금증을 풀어주겠습니다 ~ ㅋ
-- 점선 부분은 PFG 의 Hika 님이 답변해주신 내용입니다 --
1. loader.unload()
= 항상 환상을 가지면 안되시는 부분이 GC입니다. GC는 로컬 어플이거나 AIR어플인 경우 또한 샌드박스가 로컬인 경우에는 실시간으로 일어납니다. 하지만 웹에서 사용할때는 언제 일어날지 모릅니다(어도비의 공식답변) 일반적으로 메모리가 꽉차면 일어난다고 알려져있습니다 =.=;
2. loader = null
= Loader는 기본적으로 컨테이너입니다. 따라서 당연히 컨테이너분량만큼 더 차지하게 됩니다. 또한 Loader는 내부에 URLStream과 content라는 자식객체까지 기본으로 내장하고 있고 바이트어레이로부터 비트맵데이터로 변환하는 컨버터도 갖고 있습니다. 무거울 수밖에 없겠죠 ^^; 웹에서 가장 확실하게 메모리에서 제거하는 방법은 Dictionary에 담았다가 delete 시키는 수가 있습니다. 대부분의 트위너가 이걸 응용합니다. dispose는 모든 bitmapData를 날려버리는데 유용합니다 ^^
음 여기서 나온 " Dictionary " 란 ?? 음 ... 저도 궁금합니다 ~ ㅋㅋㅋ 다음에 열라 공부해서 포스팅하겠습니다 ㅋㅋ
실질적으로 이 2가지 방법을 많이 대중적으로 사용하시는걸로 알고 있습니다
그러나 loader.content 에 BitmapData 를 가지고 있는걸 Dispose 하면 좀더 메모리 효율이 좋아진다라는
머리 약간벗거진 아저씨의 말을 듣고 한번 해본결과 정말이더군요 +_+
이런식으로 따로 함수를 한개 만들어놓구 사용시 지워주면서 하면 좀더 좋겠죠 ? ..
아 저기 있는 productLoader 가 Loader 입니다 ~ .. ^_^ 참고 바랍니다
저도 GC 나 메모리에 대해서 조금씩 공부하는 과정입니다 ~ .. 허접해도 양해 바랍니다 ~
'AS3' 카테고리의 다른 글
flex 에서 svn 셋팅하기 (0) | 2009.04.20 |
---|---|
[ AS3 ] 로그클래스 log4j in AS3 (0) | 2009.03.17 |
[AS3] XML Filftering Predicate Operatior 활용하기 ( xml 필터링 하기 ) (0) | 2009.01.15 |
[AS3] AS3 가 시작하기 겁나시는분들 / Flash 매력을 느끼고 싶으신분들.. (0) | 2008.12.23 |
[AS3] AS3에서 AS2로 만든 SWF로 불러왔을때 사운드 제어 안되는문제 ( ForcibleLoader ) (4) | 2008.12.22 |