Weird stuttering issues not related to GC.
- by Smills
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;
}
}