grunk
grunk

Reputation: 14948

How to find the origin of a GC_FOR_MALLOC?

I'm working on an android app which fall into an infinite loop of GC_FOR_MALLOC freed :

06-15 11:24:56.685: DEBUG/dalvikvm(118): GC_FOR_MALLOC freed 4136 objects / 374744 bytes in 66ms
06-15 11:24:59.176: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9340 objects / 524152 bytes in 645ms
06-15 11:24:59.846: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9344 objects / 524328 bytes in 149ms
06-15 11:25:01.535: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9346 objects / 524448 bytes in 193ms
06-15 11:25:02.175: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9344 objects / 524344 bytes in 126ms

The application read some jpeg image over a socket (dedicated thread) and display it in a imageView. The GC loop is bloking the image display.

Is there a solution to know what line or at least what part of the code is throwing the Garbage collection ?

Thanks

Upvotes: 4

Views: 2811

Answers (1)

THelper
THelper

Reputation: 15619

I'm not sure if you can access the VM and check why it is performing gc all the time, but gc is usually performed when there is a need for it. You should check what is using so much memory. It may be loading your image (is it a big image?) or perhaps it is something else in your app. Check this post on how to analyse your memory usage and while you are at it check for memory leaks.

Upvotes: 2

Related Questions