5

我目前对 LWJGL 有一个简单的问题。如果我要运行我的游戏,它实际上会正确运行所有内容并且似乎正确关闭,但是当我查看任务管理器时,我注意到我的游戏在关闭后占用了 25% 的 CPU(大约 2-实际运行时为 3%),我想我可能在结束应用程序时遗漏了一些东西。

我的主要功能代码:

public static void main(String[] args){
    try {
        init();
    }catch(LWJGLException e){
        System.out.println("LWJGLException\n");
        e.printStackTrace();
    }
    try{
        gameLoop();
    }catch(Exception ex){
        ex.printStackTrace();
    }finally{
        cleanup();
    }
}

清理:

public static void cleanup(){
    System.out.println("Running cleanup code.");
    Display.destroy();
    System.exit(0);
}

它确实设法读取“运行清理代码”。我的问题是我不知道是否需要做其他事情来清除所有进程。这个游戏也是使用单线程的。

4

2 回答 2

1

我认为您的代码完全没有问题。如果您的问题是我认为的问题,您将无法立即解决它。

以下是您应该问自己的一些基本问题。您使用的是什么操作系统?您的 Java 版本和/或 LWJGL 版本是什么?(更新它们可能会有所帮助)您是否听说过/或玩过名为 Minecraft 的游戏?如果您使用的是 Linux 并且在关闭 Minecraft 时看到了这个,那么这可能是您遇到的问题。

于 2012-10-22T23:34:53.250 回答
0

我在 64 位 Windows 上遇到了同样的问题。发生运行时异常(或任何其他未捕获的异常)时,应用程序尚未关闭。可能原因是在一个独立线程中引发了一个异常,该异常影响了关闭显示窗口,但所有其他线程仍在工作。我想出了蛮力解决方案:覆盖 Thread 方法。

    Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
         @Override
         public void uncaughtException (Thread thread, final Throwable ex) {
            ex.printStackTrace();
            Display.destroy();
            System.exit(0);
         }});

    new LwjglApplication(new StartScreen(application), cfg);
于 2015-08-14T11:26:31.647 回答