eclipse europaのヒープサイズ変更で起動に失敗
Windows XPとSunのJREで確認した。eclipse.iniに記述してあるデフォルトのヒープサイズ
-Xms40m -Xms256m
を下記のように変更
-Xms128m -Xms768m
すると、eclipseが起動しなくなる。
回避方法
コマンドラインで-vmオプションを使ってデフォルトで使われるパブリックJREのjvm.dllをjavaw.exeへ置き換える事。
eclipse -vm "C:\Program Files\Java\jre1.6.0_04\bin\javaw.exe"
これで行ける。バッチファイルを作って起動するようにした。
以下は現象の詳細と解決に至るまで
eclipse Europaを使っていてデフォルト設定のヒープサイズではすぐにOut of Memoryになってしまうので、eclipse.iniに記述してあるヒープサイズを拡大。
すると起動しない…。
eclipsec.exeで起動して、メッセージを確認すると、コンソールに下記のようなメッセージ
Error occurred during initialization of VM Could not reserve enough space for object heap
さらにダイアログに下記のようなログ(抜粋)
-vm C\jdk1.6.0_04\jre\bin\client\jvm.dll
ん?3.2(callist)までは、javaw.exe使って起動してなかったっけ?と思ったので、-vmの指定を置き換える方法を探すことにして、先に書いた方法に行き当たった。その後、納得いかなかったので、いろいろ試した。
うーん。やっぱ、europaのランチャーがおかしいのか?
結局回避方法はわかったものの、原因はよくわからない。
なんでeuropaで起動方法を変えたんだろうか?
追記
europaからじゃないみたいだ。
eclipse3.2.2でも同じ現象が起きた。
eclipse3.2.1は大丈夫だった。
さらに追記
なぜjvm.dllを使うようになったかというのは、おそらくjvm.dllを使うと、プロセスが1つになるからだと思われる。タスクマネージャで確認すると、"eclipse.exe"はあるが"javaw.exe"のプロセスがない。でも開発環境だし、メモリ食うしヒープサイズの設定ができないのは致命傷だと思う。そもそもjvm.dllでなぜヒープサイズの拡大設定ができないのかも疑問だ。
今日買った本
- 作者: Leonard Richardson,Sam Ruby,山本陽平,株式会社クイープ
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/12/21
- メディア: 単行本
- 購入: 25人 クリック: 830回
- この商品を含むブログ (168件) を見る
珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造
- 作者: ジョンベントリー,Jon Bentley,小林健一郎
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/10
- メディア: 単行本
- 購入: 30人 クリック: 539回
- この商品を含むブログ (158件) を見る
あとで感想を書く。
*1今年の目標
今年こそ懐刀としてスクリプト言語を何か1つマスターする。
ということで。
- 以下候補とその理由
- Python 今のところ最有力(長いものにまかれとけという意味で)
- Ruby なんか癪にさわるので避けたいが、ブームは続く
- JavaScript 話題性とその万人受けがうらやましい
- Scheme 関数型プログラミングを体感したい(スクリプトってわけでもないけど)
うーん。
ならべて見ると、妥当な動機があるSchemeかなー。
ということで、Schemeをがんばる。
でも結局マイノリティーだなぁ…フヒヒ
ディレクトリの表示切替
セキュリティ上の理由で、ディレクトリ表示をやめたい場合に、Apacheだと、httpd.confにOptions Indexes で設定するけど、Tomcatだとどうやるかという話。
まず、Tomcatは、全アプリケーション共通の設定を$TOMCAT_HOME/conf/web.xmlに持っているのでここがあやしいんじゃないかと思って見てみると、そのものずばりdefaultという名前のサーブレットがあるじゃないか。ってなるので、さらにそのパラメータを見る。listingsがどうもそれっぽいので値をfalseに変えると...。
でけたー!
以下は変更後のdefaultサーブレットの記述。
<servlet> <servlet-name>default</servlet-name> <servlet-class> org.apache.catalina.servlets.DefaultServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>