質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JVM

JVM(Java Virtual Machine)があれば、一連のコンピューターソフトウェアプログラムとデータストラクチャが、仮想マシンモデルを使って他のコンピュータプログラムやスクリプトを拡張できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

265閲覧

Java で短命なオブジェクトを調査する方法

hattori

総合スコア8

JVM

JVM(Java Virtual Machine)があれば、一連のコンピューターソフトウェアプログラムとデータストラクチャが、仮想マシンモデルを使って他のコンピュータプログラムやスクリプトを拡張できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

3クリップ

投稿2018/09/05 04:42

編集2018/09/05 04:50

前提・実現したいこと

Java の業務用のWeb APIで、yang GC が頻繁に起こって (2.0G/sec 程度)、レイテンシが気になってきたサービスを触っています.

GC logを確認すると、どうやら短命なオブジェクトがいっぱい作られている様子であった。
実際どんな短命なオブジェクトがいるのか、当りをつけるためにヒープダンプ解析をしたのだが、
スナップショットのヒープダンプ解析をしても、短命なオブジェクトの当りがつけられない.

JVMの調整でレイテンシを改善する方法はあまり期待できない事情があるため、短命なオブジェクトを生成するソースコードの箇所を探しだし、GC を減らして、レイテンシを改善したい.

JVM の yang GC 対象になったオブジェクトの heap dump を取る方法でもあればいいのだけど...

試したこと

◆gc.log 調査

522605.654: [GC pause (G1 Evacuation Pause) (young), 0.0728800 secs]
[Parallel Time: 59.1 ms, GC Workers: 48]
[GC Worker Start (ms): Min: 522605656.8, Avg: 522605657.3, Max: 522605657.8, Diff: 1.1]
[Ext Root Scanning (ms): Min: 14.1, Avg: 15.5, Max: 55.4, Diff: 41.3, Sum: 745.9]
[Update RS (ms): Min: 0.0, Avg: 4.4, Max: 11.5, Diff: 11.5, Sum: 210.5]
[Processed Buffers: Min: 0, Avg: 25.6, Max: 58, Diff: 58, Sum: 1231]
[Scan RS (ms): Min: 0.0, Avg: 0.3, Max: 0.5, Diff: 0.5, Sum: 12.1]
[Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Object Copy (ms): Min: 2.4, Avg: 37.3, Max: 40.9, Diff: 38.4, Sum: 1789.3]
[Termination (ms): Min: 0.0, Avg: 0.4, Max: 0.5, Diff: 0.5, Sum: 18.4]
[Termination Attempts: Min: 1, Avg: 108.0, Max: 126, Diff: 125, Sum: 5184]
[GC Worker Other (ms): Min: 0.0, Avg: 0.2, Max: 0.4, Diff: 0.4, Sum: 7.3]
[GC Worker Total (ms): Min: 57.5, Avg: 58.0, Max: 58.5, Diff: 1.1, Sum: 2783.6]
[GC Worker End (ms): Min: 522605715.2, Avg: 522605715.3, Max: 522605715.6, Diff: 0.3]
[Code Root Fixup: 0.3 ms]
[Code Root Purge: 0.0 ms]
[Clear CT: 1.7 ms]
[Other: 11.7 ms]
[Choose CSet: 0.0 ms]
[Ref Proc: 2.4 ms]
[Ref Enq: 0.0 ms]
[Redirty Cards: 1.4 ms]
[Humongous Register: 0.1 ms]
[Humongous Reclaim: 0.0 ms]
[Free CSet: 0.4 ms]
[Eden: 1344.0M(1344.0M)->0.0B(1376.0M) Survivors: 192.0M->160.0M Heap: 7109.9M(15.0G)->5789.0M(15.0G)]
[Times: user=1.99 sys=0.01, real=0.08 secs]
522606.172: [GC pause (G1 Evacuation Pause) (young), 0.0739422 secs]

◆eclipse memory analyzer
historgram や、domain_tree を眺めてみた.

補足情報(FW/ツールのバージョンなど)

java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問