- PR -

JVMのヒープ設定について

投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-03-24 08:41
表記の件について教えていただきたいのですが、

インターネットでいろいろ検索したところ
java -Xms 1024 -Xmx 1024
のように記述すると設定できると書いてありました。

しかし実行したところ以下のエラーがでてしまいます。
Invalid iniital heap size: -Xms
Could not create the Java virtual machine.

なにか他に設定が必要なのでしょうか?

ご存知の方よろしくお願いいたします。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2005-03-24 09:12
多分1GB割り当てたいんですよね?
-Xmx 1024のように空白を入れないで、-Xmx1024m(mはメガです)とくっつけて実行しましょう。-Xmsも同じです。
これはJDKドキュメントの「JDK ツールとユーティリティのドキュメント」のページにあるjavaの項目に詳しく書いてあります。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-03-24 09:59
想馬さんご回答有難うございます。

コマンドプロンプトより実行してみたのですが、以下のようにエラーがでてしまいます。
class, jarは設定しなくても問題ないと思うのですが、設定しないとまずいのでしょうか?
(JDK ツールとユーティリティのドキュメントのページは参考にしてみたのですが、分かりませんでした。)
よろしくお願いいたします。

C:\Documents and Settings>java -Xms512m -Xmx512m

Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-24 10:06
クラスパスは明示的に設定しなくても良いかもしれませんが、起動するためのクラスは指定する必要があります。
HelloWorld を実行したときのことを思い出してください。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2005-03-24 10:09
設定は必要ないはずです。

ドキュメントにも書いてありますが、実行時に指定できるオプションの中で-Xから始まるものは非標準オプションとなっています。
その為、Javaの実行環境によっては指定できないものがあると思います。

試したことがありませんがjava -Xとだけ入力し実行して-Xmxや-Xmsが表示されないとすれば、金太郎さんの環境ではそのオプションは指定できないと思います。

追記:
よく見たら実行するclassファイルが指定されていませんね。


[ メッセージ編集済み 編集者: 想馬 編集日時 2005-03-24 10:10 ]
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-03-24 10:32
たびたびすいません。

クラスを指定してみたところ
java -Xms64m TEST.AServlet
Exception in thread "main" java.lang.NoClassDefFoundError: TEST.AServlet

というエラーがでました。
このクラスはServletコードなのでmainは当然ないのですが、、、。


またCLASSPATHについては以下のように設定はされています。
%JAVA_HOME%\lib;
%JAVA_HOME%\bin;
%TOMCAT_HOME%\common\lib;

>インギさん

>クラスパスは明示的に設定しなくても良いかもしれませんが、起動するためのクラスは指定す>る必要があります。

とありますが、ということは各アプリケーションに起動クラスがある場合、
それぞれのクラスに対してヒープ設定コマンドを投げないといけないということでしょうか。
あいつー
ベテラン
会議室デビュー日: 2004/05/20
投稿数: 89
投稿日時: 2005-03-24 10:39
あいつーです。

引用:

金太郎さんの書き込み (2005-03-24 10:32) より:
たびたびすいません。

クラスを指定してみたところ
java -Xms64m TEST.AServlet
Exception in thread "main" java.lang.NoClassDefFoundError: TEST.AServlet

というエラーがでました。
このクラスはServletコードなのでmainは当然ないのですが、、、。


もしかして、Tomcat等のサーブレットコンテナか何かの起動時のパラメータを設定しようとなさってますか?
であれば起動スクリプト(run.sh/run.batとか名称はよく覚えてないですが)内で、
このパラメータを指定する必要があります。

引用:

またCLASSPATHについては以下のように設定はされています。
%JAVA_HOME%lib;
%JAVA_HOME%bin;
%TOMCAT_HOME%commonlib;

>インギさん

>クラスパスは明示的に設定しなくても良いかもしれませんが、起動するためのクラスは指定す>る必要があります。

とありますが、ということは各アプリケーションに起動クラスがある場合、
それぞれのクラスに対してヒープ設定コマンドを投げないといけないということでしょうか。



各アプリケーションという言葉の意味が不明確ですが、
もし別々のJavaアプリケーションを別VMで起動するのであれば、
それぞれに設定は必要でしょう。
webアプリの場合であれば、前述のサーブレットコンテナに対する指定です。

どういう状況で、どのような設定を行いたいのかがいまいち見えてきません。

[編集]
引用ミスを修正しました。
[/編集]

[ メッセージ編集済み 編集者: あいつー 編集日時 2005-03-24 10:40 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-24 10:47
>金太郎さん
別の所で回答したのですが、見ていただけてないのでしょうか。
要は起動オプション省略時のデフォルト値を変更したいって事ですかね?

スキルアップ/キャリアアップ(JOB@IT)