jmap
jcmd
- jcmd
GC.run
Add -XX:+UnlockDiagnosticVMOptions to your JVM options, then capture GC.class_stats with jcmd at a metaspace peak:
JVM option
-Xms4G -Xmx4G -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -verbose:gc -Xloggc:gc.log
GC ログ ツール
- https://github.com/chewiebug/GCViewer
- 横に長く、ズームアウトで足りない場合、png で保存すれば縮小される
- https://gceasy.io/gc-index.jsp
- オンライン
- https://gcplot.com/
- docker で動作。"Memory" でグラフが描画されない場合、Date Range を指定。一番いい感じ?
- https://github.com/mgm3746/garbagecat
- テキストでレポート
jpsjstack
jps | awk '{if ($2 == "jboss-modules.jar") {print $1}}' | xargs jstack
IBM JDK
Snap Trace
/opt/IBM/WebSphere/AppServer/java/bin/java com.ibm.jvm.format.TraceFormat Snap.20160225.111111.1111.0001.trc
hashCode
JDK 8 からデフォルトが -XX:hashCode=5 になった http://d.hatena.ne.jp/chiheisen/20140706/1405767267 これにより、JVM を再起動した時に比較的変化しない hashCode が得られる(ように見える)
hashCode の乱数性に関わるバグを再現しやすくしたい場合、このオプションをつける(ただし付けても変化しないケースあり。Stringとか)
-XX:hashCode=0