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

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

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

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

Q&A

解決済

1回答

2939閲覧

java ヒープサイズのチューニングについて

KARI

総合スコア9

Java

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

0グッド

0クリップ

投稿2020/08/20 05:56

作業環境

# java -version Java version 1.8.0_171 Java(TM) SE Runtime Enviroment (build 1.8.0_171-b11) Java HotSpot(TM) 640Bit Server VM (build 25.171-b11, mixed mode)

ヒープサイズの前提知識

ヒープ全体のサイズを少なく設定すると、GCが頻発したりOOMEが発生する。
余分に大きく設定すると、FullGCに時間がかかったり、他プロセスで使えるメモリが少なくなるためメモリ不足になる。
なので、ちょうどいいヒープサイズを設定する必要がある。
という認識です。

経緯

今現在、ヒープサイズの不足等によるOOMEが起きているわけではありません。
チューニング方を仕事で明示する必要があるため調べていました。

知りたい事

ヒープサイズのチューニングについて調べていたのですが、
「〇と×を合わせた値をヒープサイズに設定する!」といった具体的な方法が見つかりませんでした。

「OOMEが出なくなるまでヒープサイズを少し増やすのを繰り返して、ちょうどいい値を見つける」がヒープサイズのチューニング方になるのでしょうか。
それとも別に具体的な方法があるのでしょうか。お教えください。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ざっくりいうと、一人のユーザが使うメモリ量を計算(または、計測)して、同時接続数をかけて
あとは安全マージンを20%乗せるとか、そんな感じです。

少なくとも以下の方法は、オススメしない

「OOMEが出なくなるまでヒープサイズを少し増やすのを繰り返して、ちょうどいい値を見つける」がヒープサイズのチューニング方になるのでしょうか。

OOMEが出たことは検知できるかもしれないが、出ないことはOOMEが発生しないことの保証にならない。
サイズを増やしてOOMEが出ないのか、OOMEが出るまでが遅くなるのか検証する必要がある。
※VMのメモリを監視して検証するなら、上記の方法でも良いと思います。

あとは、そもそもロードされるものとか考慮していけばよいかと。

あんまり見てないけど、それっぽいのがあったので。
※もちろん、ここに書いてあることよりは詳細に説明してる

投稿2020/08/20 08:57

momon-ga

総合スコア4826

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

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

KARI

2020/08/25 04:18

ご回答ありがとうございます。 >>一人のユーザが使うメモリ量を計算(または、計測)して、 とありますが、具体的にどう調査するのでしょうか。 http://itdoc.hitachi.co.jp/manuals/link/cosmi_v0870/APSE/EU030147.HTM 貼っていただいた見積もり方は、Hitachi特有のオプションをつかっており参考にできませんでした。
KARI

2020/08/25 05:01

どれだけ検索しても、見積もりらしい見積もり方法が見つからないのですが、ヒープサイズを仮決めしておいて、テストを行いGCの結果しだいで調整していく方が現実的でしょうか。
momon-ga

2020/08/25 07:20

計測しなくても使うオブジェクトがわかればある程度、概算は出せるのでは? > ヒープサイズを仮決めしておいて、テストを行いGCの結果しだいで調整していく方が現実的でしょうか。 仮決めの方法が知りたいのかと思いましたが・・・どんなやりかたでもいいと思いますよ。 回答にも書きましたがOOMEがでないのか、出るまでが遅くなったのかを確認できれば良いですね。 あと、メモリを確認するなら、こんなツールがあります。 https://docs.oracle.com/javase/jp/8/docs/technotes/guides/troubleshoot/memleaks001.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問