I'll give that some thought, it's not a bad idea. However, 65k strikes me as a very small request, even contiguously. Will the Java (or Dalvik) garbage collector defragment the memory at all or will it just stay fragmented indefinitely (until I reallocate things into large blocks)?
On Jun 6, 6:14 pm, Mark Murphy <[email protected]> wrote: > Keith Wiley wrote: > > My app is building a relatively large structure ("large" being a term > > that is meaningless without context), and I am getting an > > OutOfMemoryError. Problem is, I'm watching the memory using every > > metric I can think of, and I don't see how the error was triggered. > > It's obviously trying to allocate a 65kB HashSet in a rehash > > operation: > > > 06-06 17:59:11.234: ERROR/dalvikvm-heap(1884): Out of memory on a > > 65552-byte allocation. > > > Which makes sense; I traced it to the HashSet operation it is > > performing. But this is what the memory looks at: > > > ActivityManager.Memory Info: availMem: 26300416B, 26300KB, 26MB > > ActivityManager.Memory Info: threshold/lowMemory: 16777216 false > > Runtime.freeMemory: 1828856B, 1829KB, 2MB > > Runtime.totalMemory: 15605728B, 15606KB, 16MB > > Debug memory allocated/native/default: 4452208 1032336 5484544 > > > I don't get it. Why won't it make a measly 65kB heap? How can I > > detect memory problems given these utilities if they always return > > extremely large values right before and after an OutOfMemoryError? > > Are there yet additional memory utilities I should be using? > > It may be a fragmentation issue. If I understand correctly, if you do > lots and lots of reallocations, while you may have tons of memory free, > there may not be a 65552-byte buffer free. > > Can you pre-allocate your HashSet to a nice large capacity up front, to > avoid the reallocations? > > -- > Mark Murphy (a Commons > Guy)http://commonsware.com|http://twitter.com/commonsguy > > Need Android talent? Ask on HADO!http://wiki.andmob.org/hado --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

