新たなJavaScriptエンジン「Nashorn」

Java SEではこれまでRhinoというJavaScriptエンジンが同梱されていたが、Java 8からはNashornという新たなJavaScriptエンジンに変更されている。NashornはRhinoの後継と位置づけられているものの、Java 7から導入されたinvokeDynamic命令を駆使したまったく新しい実装となっており、Rhinoよりも軽量で高速に動作するとされている。

パーマネント領域の廃止

Java 7までクラス情報を格納するパーマネント領域は通常のヒープ領域とは別にサイズの指定を行う必要があった。そのため大量のクラスをロードするアプリケーションや動的にクラスのリロードが可能なフレームワークではPermGenの不足によるOutOfMemoryErrorを目にしたことのある方も多いのではないだろうか。

Java 8ではこのパーマネント領域がMetaspaceと呼ばれる領域に移動されており、個別にサイズの指定を行う必要がなくなった。ただし、極力GCを発生させたくない場合や、クラスローダにメモリリークの可能性が考えられる場合などは安全のためにMetaspaceSizeとMaxMetaspaceという新たなオプションでMetaspace領域の初期値と上限を指定することも可能だ。