Hey flexers,
My team has been building an application that's graphically heavy. The
heaviest portion consists of two sprites that are ~4000x4000 pixels and
have a bunch of sprite children and ~20 bitmaps each. The content ends
up being ~30 MB for both sprites total, give or take 20 MB. When it's
time to switch to new sprites with new content we make sure there are no
more references to the two old sprites. I've verified that garbage
collection does clean up the old content each time and memory stays
about even. However, quite commonly (maybe 1 out of 3 times) when
switching to two new sprites the Flash Player will crash. I have good
reason to believe it's the act of garbage collection that is causing
this crash. Here's why:
(1) If I'm in the Flex Profiler and I've switched to two new sprites and
then I hit "run garbage collection" it will sometimes crash right at
that moment.
(2) If I use Grant Skinner's posted hack of forcing garbage collection
it will sometimes crash right when the garbage collection is forced.
(3) If I keep a reference to all the old sprites (so garbage collection
won't collect them) it doesn't crash even after switching to new sprites
over 25 times, however the application uses more and more memory.
Can someone provide some enlightenment as to how we proceed? We don't
want the application crashing frequently but we also don't want to hog
the user's memory (and eventually cause a crash anyway). Making the
sprites smaller is an obvious route but one of the last routes we want
to take because they're that large for a reason.
Thanks. We appreciate any help offered!
Aaron