2014-05-09 15:53 GMT+02:00 Kostya Vasilyev <[email protected]>:
>
>
>
> 2014-05-09 16:59 GMT+04:00 Daniel Rindt <[email protected]>:
>
>> 2014-05-09 0:12 GMT+02:00 Kostya Vasilyev <[email protected]>:
>> > Are you absolutely sure that your code does not leak memory?
>>
>> How to be "absolutely sure". :-) Just kidding.
>>
>> > Have you tried using Eclipse MAT and putting the app through the usual
>> > paces, like rotating the screen, pausing / restarting, etc.?
>>
>> This i have done:
>> * app started, before killed
>> * dump hprof and load with mat (leak suspects)
>> * rotate, rotate, rotate...
>> * dump hprof again load with mat (leak suspects)
>>
>> i compared the mat reports with the suspects and i see no differences in
>> the
>> "leak suspects report". Which sould differ in the occupied size when i am
>> not
>> wrong?
>
>
> Well, personally, I usually use the object histogram at the starting point
> -- filtered by my app's package.
>
> When I see something that looks strange, I right click on a object class and
> do "merge shortest paths to object roots" to investigate.
>
> That's just me -- I've not used "leak suspects" -- but maybe you'd be able
> to see something interesting in the histogram?

I tried what you said, but please tell me what i can recognize as "strange"?
I don't find a definitve guide to find a leak. I can't really see any
weird thing.
The only conclusion i come to is that every new opened activity consumes
more heap and i have the feeling that this causes the oom.

>> > You'd mentioned the app being heavy on image processing -- is your
>> > memory
>> > allocation strategy based on how much memory your app's process gets?
>> > You
>> > can use ActivityManager#getMemoryClass for that.
>>
>> Actually i am aware of this complicated and consequences so i use the
>> universal image loader which is configured to scale the images exact in
>> the
>> bitmap which cost cpu time, but preserves memory.
>
>
> That's a well known library, but I guess it still needs to be configured in
> a way that makes sense for your app's flow.

I've set it for now just to preserve memory.

>> > It's too bad that your log does not have any memory allocation data. I'd
>> > consider implementing a crash handler that logs to a file, recording
>> > things
>> > like:
>> >
>> > Debug.getNativeHeapAllocatedSize()
>> > Debug.getNativeHeapFreeSize()
>> > Runtime.getRuntime().maxMemory()
>> > Runtime.getRuntime().totalMemory()
>> > Runtime.getRuntime().freeMemory()
>> > ActivityManager.getMemoryClass()
>>
>> I am new to the memory thing, and it doesn't happen a lot. It happens
>> mostly on a rare ressource device.
>
>
> You can create an emulator image with lowered per-process memory quotas.
> Don't know if it actually works the way it's supposed to, but the setting is
> there.
>
>>
>> But question again starting lots of
>> activities
>> where you can go back should not be the issue? If the activity itself
>> isn't leaking
>> anything it can be gc'ed? The backstack just fire the intent again?
>
>
> There have been a few discussions on this list about it -- with no clear
> answer that I can remember. This should be fairly easy to verify in the
> debugger.
>
> Maybe you can use the lifecycle callbacks (onStop / onStart) to release some
> memory?

You mean set collections to null?

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to