我有一个我编写的java应用程序加载TTF字体并使用Graphics2D的drawString方法。每50ms调用一次,每次x和y位置都会改变,以使文本移动。当我在Windows上运行程序时,我的CPU使用率为0-1%,但在Mac上,我的使用率约为75%。这台Windows机器确实有一个更好的CPU,但没有办法应该有这么大的差异。我认为这与硬件加速有关,我想知道如何启用它。我找到了一些Mac specific Java properties,但没有一个降低我的CPU使用率。有关如何在OS X上提高Java 2D性能的任何想法?感谢。
EDIT1:我认为这些属性会有所帮助,但他们没有。
System.setProperty("sun.java2d.opengl", "true");
System.setProperty("apple.awt.graphics.UseQuartz","true");
System.setProperty("apple.awt.graphics.EnableQ2DX","true");
EDIT2:您可以在此处下载项目源代码和字节代码:http://drop.io/ExampleScreenSaver
EDIT3:由于drop.io不再存在,我将项目上传到Google Code。现在您无需下载即可浏览代码。我仍然不知道如何解决这个问题,所以任何帮助都会受到赞赏。
答案 0 :(得分:2)
在“visualvm”中运行探查器以确定时间的去向。
答案 1 :(得分:1)
Apple JVM字体处理特定于MacOS X.例如,如果找不到当前字体中字符的字形,则JVM会查找另一种字体来显示字符。此外,默认情况下启用抗锯齿功能(如果要进行比较,应检查是否在Windows上启用了它)。 Apple的实现使用了更多的CPU,我并不感到惊讶。
答案 2 :(得分:0)
调用java时可以启用OpenGL。
java -Dsun.java2d.opengl = true MyJavaGame
从java应用程序中启用opengl
System.setProperty("sun.java2d.opengl", "true");
不确定这是如何在iOS / Linux / Android上实现的,可能需要更多关注。