sun.font.TrueTypeFont内存泄漏?

时间:2009-07-16 09:37:24

标签: java swing memory-leaks

我一直在使用堆转储分析一些Java软件,并且有350个sun.font.TrueTypeFont实例,在我已经采取的其他堆转储中有更多。应用程序代码只创建了5个Font实例,总共有24个实例,主要由WDesktopProperties和其他Java库类创建。

对于相当大的桌面应用程序,这个TrueTypeFont实例的数量是否典型?如果是这样,为什么? FontManager占用了近200kb的RAM!

谢谢,

安迪

1 个答案:

答案 0 :(得分:1)

最有可能的是,某事正在调用GraphicsEnvironment.getAllFonts()。对它的调用将在每个已安装的字体中分配1磅字体。实际的内存消耗将取决于可用字体的数量,但它不会增长,因为它们只分配一次。解析更多的工作,但另一种方法是使用GraphicsEnvironment.getAvailableFontFamilyNames(),因为它只返回名称而不实例化任何字体。