sun.font.TrueTypeFont Утечка памяти? - PullRequest
3 голосов
/ 16 июля 2009

Я профилировал некоторые программы Java с использованием дампов кучи, и существует 350 экземпляров sun.font.TrueTypeFont, в других дампах кучи, которые я использовал, было больше. Существует только 5 экземпляров Font, созданных кодом приложения, и всего 24 экземпляра, в основном, созданных WDesktopProperties и другими классами библиотек Java.

Является ли это количество экземпляров TrueTypeFont типичным для довольно большого настольного приложения? Если так, то почему? FontManager занимает почти 200 КБ оперативной памяти!

Спасибо

Andy

1 Ответ

1 голос
/ 02 февраля 2011

Скорее всего, что-то вызывает GraphicsEnvironment.getAllFonts () . При вызове этого будет выделен 1-точечный шрифт в каждой установленной гарнитуре. Фактическое потребление памяти будет зависеть от количества доступных шрифтов, но оно не будет расти, поскольку они выделяются только один раз. Это больше работы для анализа, но альтернативой является использование GraphicsEnvironment.getAvailableFontFamilyNames () , поскольку это просто возвращает имя без создания каких-либо шрифтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...