在MacBook上使用大量CPU的Java游戏,而不是Linux或Windows

在MacBook上使用大量CPU的Java游戏,而不是Linux或Windows,java,macos,awt,Java,Macos,Awt,我正在使用Java awt库为所有平台制作一个Java游戏,但我遇到了一个问题——该游戏在所有Macbook Pros上的FPS都非常差,但在Linux和Windows机器上运行良好。使用活动监视器,我可以看到游戏在Mac电脑上运行时几乎100%使用CPU,但在Windows电脑上几乎没有。有人遇到这个问题并解决了吗 这里是主要的游戏循环,注释掉Thread.sleep(waitTime)并没有改善它,这是我的第一个想法: while(running){ startTi

我正在使用Java awt库为所有平台制作一个Java游戏,但我遇到了一个问题——该游戏在所有Macbook Pros上的FPS都非常差,但在Linux和Windows机器上运行良好。使用活动监视器,我可以看到游戏在Mac电脑上运行时几乎100%使用CPU,但在Windows电脑上几乎没有。有人遇到这个问题并解决了吗

这里是主要的游戏循环,注释掉
Thread.sleep(waitTime)并没有改善它,这是我的第一个想法:

    while(running){

        startTime = System.nanoTime();

        update();
        render();
        draw();

        urdTime = (System.nanoTime() - startTime) /1000000;
        waitTime = targetTime - urdTime;

        try{
            Thread.sleep(waitTime);
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
编辑:将所有内容分解以找出瓶颈所在,占用太多时间(每次调用约0.07秒)的函数是行
g2.drawImage(image,0,0,null)其中g2为Graphics类型,并使用此行创建
Graphics g2=getGraphics()和图像是一个使用
新建BuffereImage(1600900,BuffereImage.TYPE_INT\u RGB)
创建的BuffereImage


同样有趣的是,当大小(1600x900)减小时,游戏运行得更快。

我的假设是,你的代码中有一些操作在mac上比在其他操作系统上花费的时间要长(很多),试着检查线程实际睡眠的时间,我假设这会低很多(如果不是0或更低的话),因此从不睡觉,占用所有cpu。。。尝试测试执行update()、render()和draw()所需的时间。。。看看哪种方法执行起来比正常方法要长得多,把问题缩小到实际的(慢的)代码上。如果可能,您可能希望在OSX中以Java6为目标,而不是7或8。Java6JRE是由苹果公司创建的,比Oracle的7或8使用更多的硬件加速。看到这个帖子:@Subler缩小了范围,但是对于导致问题的方法,我无能为力。发现其他人有同样的问题,但对他们有效的修复对我没有帮助。@Wiskyspider查看Eclipse>关于Eclipse>安装详细信息,并查找行“java.runtime.version=”它说“java.runtime.version=1.6.0_65-b14-466.1-11M4716”,我相信这意味着它在java 6下运行,但我可能错了——整个配置都不太好