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
-~----------~----~----~----~------~----~------~--~---

Reply via email to