診断ガイド

     前  次    目次     
コンテンツの開始位置

Oracle JRockit JVM のパフォーマンスが時間の経過と共に低下する

Oracle JRockit JVM は、大規模なサーバ環境で実行するように設計されています。そのため、JVM はアプリケーションの実行中、常に一定で均等なパフォーマンスを維持する必要があります。JVM を長期間実行していると、このパフォーマンスが低下し始めていることに気付く場合があります。たとえば、当初は問題なく機能していたアプリケーションでも、しばらくすると実行が遅くなってパフォーマンスが不安定になり始めます。この節では、パフォーマンスの低下を認識し、それに対処する方法について説明します。

 


通常はチューニングの問題

システムのパフォーマンスが低下し始めるときは、多くの場合、チューニングに問題があります。たとえば、圧縮が適切にチューニングされていないと、OutOfMemoryError の発生を抑えるためにガベージ コレクタによる完全な圧縮の実行が必要になるまで、ヒープの断片化が進むため、パフォーマンスがたびたび低下します。

時間のかかるトラブルシューティングを行ったり緩和策を講じる前に、パフォーマンスが安定するように JRockit JVM をチューニングし、アプリケーションを再起動してください。パフォーマンスが安定するように JVM をチューニングする詳細な手順については、「パフォーマンスを安定させるチューニング」を参照してください。

 


最適化の問題

パフォーマンスが徐々に低下している場合は、最適化の問題が発生している可能性があります。この問題は、プログラムをしばらく実行していると次のような現象が発生するという形で現れる傾向があります。

一般には、最適化が原因でこの種のパフォーマンス低下の問題が起きることはありません。それでも、問題を報告する前に、考えられる原因からその可能性を除外するために、-XnoOpt を指定して JVM を実行し、コードの最適化を無効にしてみてください。最適化を無効にするとアプリケーションが正常に動作する場合は、問題の原因が最適化にあると考えられます。その場合は、「問題のあるメソッドを除外する」で説明されている、最適でないメソッドを分離して除外するための手順に従います。

 


Java でのメモリ リーク

Java でメモリ リークが発生すると、メモリを解放するためにガベージ コレクタの動作が過度になるため、アプリケーションの実行が時間の経過と共に遅くなります。JVM は結局のところ OutOfMemoryError を送出することになりますが、メモリ リークの小さいアプリケーションでは、送出されるまで何日も実行されることがあります。

メモリ リークが発生する初期の兆候を見つけるためには、JRA 記録を行い、古いコレクションが行われるたびにヒープ使用量を確認することができます。このメモリの使用量が増加し続ける場合、メモリ リークが発生している可能性があります。JRockit JVM R27.1 以降を Oracle JRockit Mission Control 2.0 以降と共に実行している場合は、JRA 記録を作成および解釈するための詳細な手順が JRockit Mission Control 組み込みヘルプに記載されています。以前のバージョンの Oracle JRockit JVM を使用している場合は、手順については、「JRockit Mission Control 1.0 での JRA 記録の作成」を参照してください。

Memory Leak Detector (メモリ リークを引き起こすクラスをピンポイントするには助けます) を使用することでメモリ リークを診断できます。Memory Leak Detector を使用する詳細な手順は、Oracle JRockit Mission Control 2.0 以降のリリースの組み込みヘルプに記載されています。

 


問題が解決できない場合の Oracle サポートへの連絡

パフォーマンスを安定させるチューニング」に示されているどの方法を試しても問題が解決しない場合は、Oracle サポートに連絡する必要があります。Oracle に問題を報告する方法、およびその際に提出する情報については、「Oracle サポートへのトラブル レポートの送付」を参照してください。


  ページの先頭       前  次