Weird stuttering issues not related to GC.

Posted by Smills on Stack Overflow See other posts from Stack Overflow or by Smills
Published on 2010-12-22T12:27:19Z Indexed on 2010/12/22 13:54 UTC
Read the original article Hit count: 238

Filed under:
|
|
|

I am getting some odd stuttering issues with my game even though my FPS never seems to drop below 30. About every 5 seconds my game stutters. I was originally getting stuttering every 1-2 seconds due to my garbage collection issues, but I have sorted those and will often go 15-20 seconds without a garbage collection.

Despite this, my game still stutters periodically even when there is no GC listed in logcat anywhere near the stutter. Even when I take out most of my code and simply make my "physics" code the below code I get this weird slowdown issue. I feel that I am missing something or overlooking something.

Shouldn't that "elapsed" code that I put in stop any variance in the speed of the main character related to changes in FPS?

Any input/theories would be awesome.

Physics:

private void updatePhysics()
{
    //get current time
    long now = System.currentTimeMillis();

    //added this to see if I could speed it up, it made no difference
    Thread myThread = Thread.currentThread();
    myThread.setPriority(Thread.MAX_PRIORITY);

    //work out elapsed time since last frame in seconds
    double elapsed = (now - mLastTime2) / 1000.0;

    mLastTime2 = now;

    //measures FPS and displays in logcat once every 30 frames
    fps+=1/elapsed;
    fpscount+=1;

    if (fpscount==30)
    {
        fps=fps/fpscount;
        Log.i("myActivity","FPS: "+fps+" Touch: "+touch);
        fpscount=0;
    }

    //this should make the main character (theoretically) move upwards at a steady pace
    mY-=100*elapsed;

    //increase amount I translate the draw to = main characters Y 
    //location if the main character goes upwards
    if (mY<=viewY)
    {
        viewY=mY;
    }
}

© Stack Overflow or respective owner

Related posts about java

Related posts about android