I have seen many lists with images before. Again, I'd be happy to fix a possible issue but I would need a repro case and an explanation of what is holding memory and how. I can certainly see views moved to the scrap heap holding onto these large images, but the scrap heap is mostly filled when a list uses views of different types, which doesn't seem to be what you are describing (I would expect at most one view in the scrap heap in your case.)
On Thu, Mar 31, 2011 at 12:02 PM, Matthew Powers <[email protected]> wrote: > Yeah we have a unique setup. An e-reader that uses a listview to actually > scroll vertically instead of using the conventional gallery, with very high > resolution images. It doesn't surprise me that you have not seen this > before, its an unconventional way of using a listview and we are using very > high res images. I can assure you though, it happens. > > > On Thu, Mar 31, 2011 at 2:51 PM, Romain Guy <[email protected]> wrote: > >> Bitmaps are an entirely different problem. Android 3.0 improves bitmaps >> memory management a lot by reducing the time it takes for them to be >> reclaimed by the GC. A leak happens only if there's memory that never gets >> reclaimed, which I believe is not the case here. I would again be happy to >> track down and fix such an issue but the fact that we've never witnessed it >> in many many apps that use ListView makes me doubtful. >> >> On Thu, Mar 31, 2011 at 11:47 AM, Matthew Powers <[email protected]>wrote: >> >>> Sorry I didn't explain myself fully. In our layout we have a listview >>> with rather large images. We have shown many times that the gc does not run >>> quick enough to clean up the images onDestroy, onConfigurationChange, etc >>> and are getting OOM exceptions. We have seen bitmaps getting stranded and >>> have had to clean them up by hand, thus walking the tree and recycling the >>> individual bitmaps by hand (nulling out does nothing). There appears to be >>> new documentation about the recycler where theoretcially we could set a >>> recycler listener and monitor when a view is moved onto the scrap heap to >>> achieve the same thing, however I have seen instances of onMovedToScrapHeap >>> firing on views that are still in focus. I have submitted a bug with >>> detailed instructions on how to reproduce this. >>> I could be wrong but we have had a lot of engineers looking at this leak >>> in the listview over the last several months. >>> >>> >>> On Thu, Mar 31, 2011 at 2:40 PM, Romain Guy <[email protected]>wrote: >>> >>>> There is no need to do this whatsoever. And you cannot "recycle" Views >>>> anyway, at most you can set all the references to null manually which will >>>> not make much of a difference. The GC will eventually collect the ListView >>>> instances. >>>> >>>> On Thu, Mar 31, 2011 at 11:32 AM, Matthew Powers <[email protected]>wrote: >>>> >>>>> I have played with this MANY times. The only solution I have seen is >>>>> to walkthetree in the listview and recycle your objects by hand >>>>> >>>>> On Thu, Mar 31, 2011 at 2:08 PM, ivan <[email protected]> wrote: >>>>> >>>>>> Ok I just tested the api demo again. >>>>>> >>>>>> I went in and out of List1.java 15 times, and only saw 8 instances >>>>>> still on the heap. >>>>>> >>>>>> So, clearly "some" are being GC'd. >>>>>> >>>>>> My question still remains... Why doesn't this happen with other views? >>>>>> >>>>>> On Mar 31, 11:50 am, ivan <[email protected]> wrote: >>>>>> > So to reiterate ... >>>>>> > >>>>>> > I can see every instance of a ListView/ListActivity (ever created) >>>>>> > sitting around in memory, even though I force a GC in every call to >>>>>> > onDestroy(). >>>>>> > ... And this is the expected behavior, because the Dalvik GC will >>>>>> > "eventually" collect them. >>>>>> > >>>>>> > Why isn't this the case with other views? >>>>>> > >>>>>> > On Mar 31, 10:28 am, Mark Murphy <[email protected]> wrote: >>>>>> > >>>>>> > > On Thu, Mar 31, 2011 at 11:58 AM, ivan <[email protected]> >>>>>> wrote: >>>>>> > > > Incoming references and path to GC root show only the >>>>>> TmpTestActivity. >>>>>> > >>>>>> > > If I am understanding you correctly, then, it is merely a matter >>>>>> of >>>>>> > > them not having been GC'd yet. Bear in mind that the Dalvik GC >>>>>> > > implementation does not try to reclaim all unreferenced objects in >>>>>> a >>>>>> > > single pass. >>>>>> > >>>>>> > > -- >>>>>> > > Mark Murphy (a Commons Guy)http://commonsware.com| >>>>>> http://github.com/commonsguyhttp://commonsware.com/blog|http://twitter.com/commonsguy >>>>>> > >>>>>> > > Android Training in NYC:http://marakana.com/training/android/ >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Android Developers" group. >>>>>> To post to this group, send email to >>>>>> [email protected] >>>>>> To unsubscribe from this group, send email to >>>>>> [email protected] >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/android-developers?hl=en >>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Android Developers" group. >>>>> To post to this group, send email to >>>>> [email protected] >>>>> To unsubscribe from this group, send email to >>>>> [email protected] >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/android-developers?hl=en >>>>> >>>> >>>> >>>> >>>> -- >>>> Romain Guy >>>> Android framework engineer >>>> [email protected] >>>> >>>> Note: please don't send private questions to me, as I don't have time to >>>> provide private support. All such questions should be posted on public >>>> forums, where I and others can see and answer them >>>> >>> >>> >> >> >> -- >> Romain Guy >> Android framework engineer >> [email protected] >> >> Note: please don't send private questions to me, as I don't have time to >> provide private support. All such questions should be posted on public >> forums, where I and others can see and answer them >> > > -- Romain Guy Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support. All such questions should be posted on public forums, where I and others can see and answer them -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

