Question

To keep it simple: I'm working on a small app where we want to click several objects after each other. On clicking an object, it is supposed to play a sound.

This works well, except that from time to time, the entire app (including LogCat's logging) just freezes for about 5 seconds, after which it seems to catch up. (All threads freeze) With catching up I mean; if you continue clicking during the freeze, after unfreezing, it still knows what to do.

The Log is simple:

01-17 14:52:08.292: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:08.473: D/dalvikvm(17963): GC_CONCURRENT freed 417K, 48% free 3113K/5895K, external 140K/647K, paused 2ms+4ms

01-17 14:52:09.033: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:09.484: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:10.174: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:10.785: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:15.169: D/dalvikvm(17963): GC_EXPLICIT freed 338K, 49% free 3061K/5895K, external 140K/647K, paused 43ms

Notice the 5 second delay between the last two logs.

I tried removing all audio, but that doesn't solve anything.
A text file being logged also does not influence anything apparently.

Does anyone have a clue as how to solve this annoying problem?
Thanks in advance.


Edit:
When pausing the program during the freeze it points to a certain method. What could cause this freeze in this:

public synchronized boolean removeEntity(long id)
{
    for (Entity ent : this.entities)
        if (ent.getId() == id)
            return this.entities.remove(ent);

    return false;
}
Was it helpful?

Solution 2

Oke, Nevermind =(

After a days worth of debugging, it turns out I created a ye old dead lock with the synchronized methods. Just weird how it always continues when not hooked to the PC.

My mistake!

OTHER TIPS

That garbage collector is doing a lot of work. Have you tried running Allocation Tracker in DDMS to find out where all this memory is being allocated? If this is a game, make sure you're not creating large objects in the main loop.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top