CやC++では、メモリに割り当てた領域は、不要になった時点でプログラマが明示的に解放する必要があります。しかし、この解放処理に漏れやミスがあると、メモリリーク、プログラム停止および暴走が発生するデメリットがあります。
Javaでは、ガーベジコレクション(GC)を導入したことにより、プログラマがメモリ管理において作業の負担を軽減できるようになりました。その反面、GCが発生するたびにJavaアプリケーションが一時停止するため、パフォーマンス劣化の要因になることがあります。また、Java独特のメモリリークも存在します。
Javaでは、スレッドを管理しやすいため、大量のスレッドを生成する傾向があります。このため、スタックが大量に生成されて、メモリ不足になることもあります。
以上から、多くの場合において、JDK/JREのチューニングは、スタックサイズ、または、GCの発生頻度とその処理時間を調整することになります。本章では、Javaアプリケーションのチューニングにあたって、必要な基礎知識やチューニング方法などを説明します。