Изображения кэшируются и занимают мое пространство кучи

Этот вопрос является результатом ответов, предоставленных мне на мой предыдущий вопрос .

Меня попросили использовать Eclipse MAT, чтобы выяснить, что съедает мою кучу. Ниже приведены мои наблюдения (основные потребители):

class sun.awt.SunToolkit                                 333.7 MB
com.tennisearth.service.impl.CacheManagerServiceImpl     136 MB
org.apache.jasper.servlet.JspServlet                     91.5 MB

Я уже исправил проблему с CacheManageServiceImpl , но мне нужна помощь с SunToolkit .

Ниже приведен код, который создает изображение объект (который внутренне использует SunToolkit. imgCache )

Image img = new ImageIcon(imagePath).getImage();
int imageWidth = img.getWidth(null);
int imageHeight = img.getHeight(null);

Обратите внимание, что объект Image создается только для получения ширины / высоты изображения, что потребуется позже в некоторой логике.

Есть ли способ отключить SunToolkit ] кеширование изображений? А еще лучше, есть ли способ очистить этот кеш? Или есть лучший способ получить эту информацию?

Кстати, для справки, я использую следующую команду для запуска jboss (пожалуйста, обратите внимание на аргументы размера кучи):

java -Dprogram.name=run.sh -server -Xms256m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m -verbose:gc -Xloggc:/data1/logs/jboss/GC.log -XX:+HeapDumpOnOutOfMemoryError -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=false -Djava.net.preferIPv4Stack=true -Djava.library.path=/usr/local/java/jboss-4.2.2.GA/bin/native -Djava.endorsed.dirs=/usr/local/java/jboss-4.2.2.GA/lib/endorsed -classpath /usr/local/java/jboss-4.2.2.GA/bin/run.jar:/usr/local/java/jdk1.6.0_06/lib/tools.jar org.jboss.Main -c default -b  -Djboss.messaging.ServerPeerID=1

Sumit

5
задан Community 23 May 2017 в 12:34
поделиться