概要IntelliJ Community project 内のプロジェクトである Fernflower を紹介します。Fernflower は Java のデコンパイラです。内容Fernflower を用いた Java のデコンパイル方法を紹介します。Ubuntu 18.04 上で試してます。1. IntelliJ Community プロジェクトをクローンします。git clone https://github.com/JetBrains/intellij-community2. Fernflower をビルドします。cd intellij-community/plugins/java-decompiler/e...
- 2018/09/24(月) 23:12:40|
- Java
-
| トラックバック:0
-
| コメント:0
概要Java アプリのヒープダンプの状態を比較する方法を紹介します。ここでは VisualVM を用います。内容手順1. ヒープダンプを取得する Java プログラムのプロセス ID を確認します。jcmd2. ヒープダンプを作成します。jcmd <プロセス ID> GC.heap_dump <ヒープダンプの出力パス>3. 比較用のヒープダンプを作成します。jcmd <プロセス ID> GC.heap_dump <ヒープダンプの出力パス>4. VisualVM を起動します...
- 2018/09/09(日) 22:27:04|
- Java
-
| トラックバック:0
-
| コメント:0
Java 7 より追加された jcmd を使って、デッドロックの原因を調査する方法を紹介します。手順1. jcmd を実行し、デッドロックが疑われるアプリのプロセス ID を表示させます。2. jcmd <プロセス ID> Thread.print でコールスタックが表示されます。3. ハングを検知すると、デッドロックの情報とスレッドのコールスタックが表示されます。今回用いたソースコード以下のソースコードでデッドロックを作りました。public class ...
- 2018/08/19(日) 22:54:55|
- Java
-
| トラックバック:0
-
| コメント:0
概要Java 9 以降のコアダンプで、ハングの原因を特定する方法を紹介します。今回用いたソースコードは GitHub のサイトで確認できます。内容GUI ツール1. 「jhsdb hsdb」を実行します。2. 「File」→「Open HotSpot core file」をクリックします。3. 「Path to core file:」にコアファイルのパスを、「Path to Java executable:」にコアダンプ作成時に使用していた Java 実行ファイルへのパスを入力します。4. 「Tools」→「Deadlock...
- 2018/07/22(日) 23:58:21|
- Java
-
| トラックバック:0
-
| コメント:0
概要実行中の Java のコールスタックを表示する方法を 3 つ紹介します。内容kill –quit <pid>kill –quit <pid> を実行すると、実行プロセスのコンソールにコールスタックが表示されます。jstack –l <pid>jstack –l <pid> を実行すると、jstack の実行結果にコールスタックが表示されます。jstack は JDK に入っているコマンドです。VisualVMVisualVM にてプロセスを右クリックして「Thread Dump」をクリッ...
- 2018/06/18(月) 23:15:47|
- Java
-
| トラックバック:0
-
| コメント:0