Java SE 8 ではメモリ使用量の再確認が必要?

ただの思いつきメモ。

  • 現行の JDK で使われている HotSpot JVM は、メモリが Java ヒープと PermGen (PermGen) 領域に分かれている
    • おおまかに言うと、インスタンスの情報が Java ヒープに入り、クラスファイルの内容が PermGen に入る
    • 厳密には、高速化のために PermGem を使ったりもする。あと、Java ヒープと PermGen の他に C ヒープもある
  • Oracle は現在 HotSpot JVMJRockit JVM の統合作業中
    • Java SE 7 には間に合わなかったが、Java SE 8 までには統合完了の予定位らしい
    • JRockit JVM には、Java ヒープと PermGen 領域の区別がない
    • ということは、今まで「Java ヒープは 512MB あれば足りそう」と思っていたアプリでも、Java SE 8 での設定値についてはチューニングし直しが必要
  • Project Lambda も Java SE 8 で入る予定
    • Javaラムダ式は、Functional Interface (メソッド 1 つだけのインタフェース) の実装を書くためのシンタックスシュガー
    • とすると、ラムダ式を 3 回書くのは匿名内部クラスを 3 個作るのと同様 (たぶん)
    • とすると、その分クラス数が増え、メモリ消費が増える
    • (起動もその分遅くなるかも)