I'm working on a java 2d game, using this simple game loop to cap the FPS and UpdatesPS to 60:
public void run() {
        final int MAX_FPS = 60;
        final int MAX_UPS = 60;
        final double fOPTIMAL_TIME = 1000000000 / MAX_FPS;
        final double uOPTIMAL_TIME = 1000000000 / MAX_UPS;
        double uDeltaTime = 0, fDeltaTime = 0;
        int frames = 0, updates = 0;
        long startTime = System.nanoTime();
        long timer = System.currentTimeMillis();
        // GameLOOP starts here
        while (running) {
            long currentTime = System.nanoTime();
            uDeltaTime += (currentTime - startTime);
            fDeltaTime += (currentTime - startTime);
            startTime = currentTime;
            if (uDeltaTime >= uOPTIMAL_TIME) {
                gameUpdate();
                updates++;
                uDeltaTime -= uOPTIMAL_TIME;
            }
            if (fDeltaTime >= fOPTIMAL_TIME) {
                gameRender();
                gameDraw();
                frames++;
                fDeltaTime -= fOPTIMAL_TIME;
            }
            if (System.currentTimeMillis() - timer >= 1000) {
                fps = frames;   //saves the current FPS
                ups = updates;  //saves the current UPS
                updates = 0;
                frames = 0;
                timer += 1000;
            }
        }
    }
The loop works, but I get only 30 FPS for the first ~10 Seconds after starting the game.
After I wait, the FPS raises up to the wanted 60. I don't have a problem to wait a few seconds to let the program stabilize and reach the wanted framerate. But I can't find the reason like a methode who drops the FPS because it's fetching a big file after startup.
Do you have any idea why my engine needs so long to stabilize the framerate?
Thanks for your help!
 
    