2011-01-11 14 views
6

メモリが足りなくなったときにwebstartをダンプするようにしています。Java Webstartヒープダンプ

私はjmap/jconsoleの方法を知っていますが、本当にやりたいことは、jnlpファイルにオプションを追加して、次のオプションを試したことです。

  1. J2SEバージョン= "1.6+の" Java-VM-引数= " - サーバー+ HeapDumpOnOutOfMemoryError" 最大ヒープサイズ= "768M"
  2. J2SEバージョン= "1.6+" のjava-VM-引数= 「-XX -server:+ HeapDumpOnOutOfMemoryError」最大ヒープサイズ=「768M」
+1

これらのオプションでプログラムを実行すると、どのような結果が得られますか? – Davidann

+0

これは、クライアントのコンピュータを操作すること(ファイルをローカルコンピュータにダンプすること)を伴うためです。このオプションの周りにセキュリティコントロールがあるなら、私は驚かないでしょう。完全に拒否されている可能性があります。 – jtahlborn

+0

'-XX:HeapDumpPath =/tmp'などを追加してパスを指定しようとしましたか? –

答えて

2

このオプションは、JNLPファイルに配置するときにはdefinetly動作しません。許可されたオプションのリストがあり、他は無視されます。 documentationで利用可能なJVMオプションのリストを確認できます。

エンドユーザーが自分のコンピュータでアプリケーションを実行するということです。彼のコンプのヒープダンプで何をしますか?あなたのアプリを実行しているのは世界中の誰でも可能性があります。 JNLPファイルを使用してエンドユーザーのJVMでこれを行うことが許可されているかどうかは、あまり意味がありません。

私が考えることができる唯一の状況は、そのコンピュータにアクセスできることと、後でダンプをチェックできることです。その場合(エンドユーザーがダンプを要求したとき)、ブラウザからjnlpファイルの自動実行をバイパスして、javawsコマンドで自分で実行すると、実際には可能です。私が撮影したとしている手順は、次のように(JNLPファイルがtestOOM.jnlpだったと仮定して、あなたは窓の上にある)し、成功に導く:

  1. は、コマンドラインからJNLPファイル
  2. をダウンロードしてディレクトリに移動しますJNLPファイル
  3. が、このアプリは、ブラウザからのような非常に同じように発売される使用javaws -verbose -J-XX:+HeapDumpOnOutOfMemoryError testOOM.jnlp

実行します。しかし、-Jオプションに注目してください。これにより、JVMオプションをJVMに提供することができます。ダンプを要求したebdユーザークライアントであるため、これは問題ありません。

OutOfMemoryErrorでヒープダンプは、javawsコマンドを実行したのと同じディレクトリに格納されます。

+0

ありがとう、私たちは実際にダンプを取得できるように内部的に配布しています。スクリプトを実行できるかどうかを確認します – benjipete

+0

喜んで助けてください:) –

+0

開発者がWebstartアプリケーションをヒープダンプを生成します。開発者が直接接触していないユーザーが多い制作アプリでは、これは役に立たないでしょう。ただし、開発中にはベータユーザー、テストユーザー、開発チームに所属するユーザーがいます。これは私の場合です...そして、ヒープダンプファイルが生成された場合、ヒープダンプファイルを取得するのに十分な知識があります。このオプションを持たせることは非常に便利で、私には非常に意味があります。 – Jason

4

Java 7 Release Notesによれば、-XX:+ HeapDumpOnOutOfMemoryErrorオプションは、Webスタートアプリケーション(RFE: 6664424)でサポートされるようになりました。

関連する問題