この質問は、前の質問に対して提供された回答の結果です。
何がヒープを消費しているかを調査するために、EclipseMATを使用するように依頼されました。以下は私の観察です(トップ消費者):
class sun.awt.SunToolkit 333.7 MB
com.tennisearth.service.impl.CacheManagerServiceImpl 136 MB
org.apache.jasper.servlet.JspServlet 91.5 MB
の問題はすでに修正されていますが、のCacheManageServiceImpl
ヘルプが必要ですSunToolkit
。
以下は、Imageオブジェクト(内部で使用するSunToolkit.imgCache
)を作成するコードです。
Image img = new ImageIcon(imagePath).getImage();
int imageWidth = img.getWidth(null);
int imageHeight = img.getHeight(null);
Plzは、Imageオブジェクトは、後でいくつかのロジックで必要となる画像の幅/高さを取得するためにのみ作成されていることに注意してください。
SunToolkit
画像のキャッシュを無効にする方法はありますか?さらに良いことに、このキャッシュをクリアする方法はありますか?または、この情報を取得するためのより良い方法はありますか?
参考までに、以下のコマンドを使用してjbossを実行しています(plzはヒープサイズの引数に注意してください)。
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 <IP_ADDRESS> -Djboss.messaging.ServerPeerID=1
スミット