getFontMetrics()在Java小程序中第一次调用时使用8000ms
在我的java小程序中调用getFontMetrics()在Java小程序中第一次调用时使用8000ms,java,graphics,applet,awt,fontmetrics,Java,Graphics,Applet,Awt,Fontmetrics,在我的java小程序中调用getFontMetrics()需要5000毫秒到22000毫秒才能返回!后续调用似乎花费的时间可以忽略不计(0-16毫秒) 我必须承认我在一台机器上运行,它有一个简单的图形驱动程序(显卡坏了,所以我不能使用英伟达驱动程序),但是这看起来是一个简单的小程序的天文性能。p> 有人知道这是什么原因吗?我在stackoveflow上也遇到过同样的问题,但似乎没有令人满意的答案。 我在eclipse中运行这个,但在IE、Mozilla和Chrome中运行会产生相同的延迟 SSC
getFontMetrics()
需要5000毫秒到22000毫秒才能返回!后续调用似乎花费的时间可以忽略不计(0-16毫秒)
<>我必须承认我在一台机器上运行,它有一个简单的图形驱动程序(显卡坏了,所以我不能使用英伟达驱动程序),但是这看起来是一个简单的小程序的天文性能。p>
有人知道这是什么原因吗?我在stackoveflow上也遇到过同样的问题,但似乎没有令人满意的答案。
我在eclipse中运行这个,但在IE、Mozilla和Chrome中运行会产生相同的延迟
SSCCE应要求:
import java.applet.Applet;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
public class fontProblems extends Applet{
Graphics2D g;
FontMetrics fm;
Font font=new Font("Roman", Font.BOLD, 36);
public void paint(Graphics g2){
g = (Graphics2D) g2;
fm = g.getFontMetrics(font);
}
}
根据文档(),AWT组件只能使用逻辑字体。将字体更改为“SansSerif”为我解决了这个问题。根据文档(),AWT组件只能使用逻辑字体。将字体更改为“SansSerif”为我解决了这个问题。为了获得线索,如果无法在调试模式下运行小程序,那么可以从另一个线程获得通过ThreadMXBean调用getFontMetrics()的线程堆栈跟踪,以查看它“卡住”的位置。(可能在gubbinry中,它最终不得不从浏览器访问速度较慢的地方检索字体元数据???不知道这是否有帮助:它是通过网络检索字体数据吗?“有人知道这可能是什么原因吗?”很可能是代码。为了更快地获得更好的帮助,请发布一个。正如您所看到的,我已经发布了SSSCCE,非常简短!我会把ThreadMXBean弄得一团糟,谢谢。jt为了获得线索,如果无法在调试模式下运行小程序,那么可以从另一个线程获得通过ThreadMXBean调用getFontMetrics()的线程的堆栈跟踪,以查看其“卡住”的位置。(可能在gubbinry中,它最终不得不从浏览器访问速度较慢的地方检索字体元数据???不知道这是否有帮助:它是通过网络检索字体数据吗?“有人知道这可能是什么原因吗?”很可能是代码。为了更快地获得更好的帮助,请发布一个。正如您所看到的,我已经发布了SSSCCE,非常简短!我会把ThreadMXBean弄得一团糟,谢谢。J