Eclipse + CDT で突然死ぬ場合の対処

以下の組み合わせで問題が発生した。

64bit Ubuntu + Sun-Java6-JDK + Eclipse Helios 64bit + CDT

これが Sun-Java5-JDK だと問題が発生しない。


解決方法としては eclipse.ini の -vmargs の下に

-XX:+UseCompressedOops

をつけること。これは Java6 の途中で増えたオプションで、

-XX:+UseCompressedOops オプションを使用すると、Java オブジェクトヒープのサイズが 32 ギガバイト未満の場合に、64 ビット JRE のパフォーマンスを向上させることができます。この場合、HotSpot はオブジェクト参照を 32 ビットに圧縮して、処理する必要のあるデータの量を減らします。

Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle

とのこと。


問題が発生したときは、原因がなんだかよくわからなかったので、拡張をひとつずつしらみつぶしで調べたら CDT だということがわかり、以下のつぶやきで原因が特定できた(ありがたいことです)。

http://friendfeed.com/koko1000ban/e70e48d2/64bitusecompressedoopscdt

2011/06/28 追記

-XX:+UseCompressedOops オプションがあっても、死ぬときは死ぬようです。

JDK 1.5 をインストールして、

sudo update-alternatives --config java

で使用する Java を 1.5 にするのが安全です(僕の環境では)。

2011/09/16 追記

Ubuntu 64bit + Sun JDK 1.5.0_22-b03 64bit + Eclipse INDIGO

という環境で時々突然死する。原因・解決方法はまだ不明