[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
質問
との比較ができたらいいなと思いました。
_JAVA_OPTIONS
と
JAVA_TOOL_OPTIONS
.
ちょっと探してみたのですが、なかなか見つからないので、ここStackoverflowで知識を得ることができればと思います。
JAVA_OPTS
は念のため入れておきます。これはJVMの一部ではありませんが、それについて多くの質問が野放しになっています。
知っていること
今のところ分かったのは
-
JAVA_OPTS
は JDK では使用されず、他の多くのアプリで使用されています ( この記事 ). -
JAVA_TOOL_OPTIONS
そして_JAVA_OPTIONS
は、JVMの引数をコマンドライン・パラメータではなく、環境変数として指定する方法です。-
で拾われ、少なくとも
java
とjavac
-
このような優先順位があります。
-
_JAVA_OPTIONS
(他を上書きする) - コマンドラインパラメータ
-
JAVA_TOOL_OPTIONS
(他で上書きされます)
-
-
で拾われ、少なくとも
知りたいこと
-
公式ドキュメントはありますか?
JAVA_TOOL_OPTIONS
と_JAVA_OPTIONS
-
その他に何か違いはありますか?
JAVA_TOOL_OPTIONS
と_JAVA_OPTIONS
(precedenceから除く)。 -
どの実行ファイルをピックアップするか
JAVA_TOOL_OPTIONS
と_JAVA_OPTIONS
(に加えてjava
とjavac
) -
に含めることができるものに制限がある場合
JAVA_TOOL_OPTIONS
と_JAVA_OPTIONS
公式ドキュメンテーション
に関するドキュメントを見つけることができませんでした。
_JAVA_OPTIONS
.
のドキュメントは
JAVA_TOOL_OPTIONS
は、その違いについてあまり明らかにしていません。
例えば、埋め込み VM やスクリプトの奥深くで起動された VM のように、コマンドラインに常にアクセスしたり修正したりすることはできないので、JAVA_TOOL_OPTIONS 変数は、これらのケースでエージェントが起動できるように提供されています。
...
スクリプト例
これは、私がこれを理解するために使用したコードです。コンソールの出力はコメントとして含まれています。
export JAVA_OPTS=foobar
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
java -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# java version "1.7.0_40"
OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)
javac -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40
export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40
export JAVA_TOOL_OPTIONS="-Xmx512m -Xms64m"
export _JAVA_OPTIONS="-Xmx1 -Xms1"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap
export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS=
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS:
# java version "1.7.0_40"
# OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
# OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx1 -Xms1"
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap
解決方法は?
これらのオプションは、ライブラリコールを介してJVMをインプロセスで起動した場合でもピックアップされることを除けば、ほぼ釘付けになります。
というのは
_JAVA_OPTIONS
はドキュメント化されていないことから、この変数を使うことは推奨されていないことがわかります。
~/.bashrc
. ただし、この問題の真相を知りたい場合は、Oracle HotSpot VMのソース(例.
OpenJDK7では
).
また、他の VM が文書化されていない変数をサポートしている、あるいは今後もサポートし続けるという保証はないことも覚えておく必要があります。
update 2015-08-04:
検索エンジンから来る人のために5分を節約するため。
_JAVA_OPTIONS
はコマンドライン引数に取って代わられ、その結果
JAVA_TOOL_OPTIONS
.
関連
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません
-
[解決済み] アクティビティに割り当てられない
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み】HashMap、LinkedHashMap、TreeMapの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.io.tmpdirを制御するための環境変数?
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] Java の substring() の時間複雑性
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み】Javaのオプション -Xmxは何の略ですか?[重複しています]