現在のJavaでも、StreamのClose漏れなどは多くあります。メモリリークによるOutOfMemoryエラーには、多くのプログラマーが苦しめられてきたことでしょう。このメモリ関係のエラーは、スタックトレースが当てにならないので、調査が非常に大変でした。なんとかこの煩雑な管理を簡素化できないか?という問題意識のもと、考え出されたのがGarbageCollectionでした。メモリ掃除役のGarbageCollectionGarbageCollectionが考え出されて以来、プログラマーが意識してメモリを管理する事はなくなりました。メモリの大容量化もさることながら、メモリの管理を意識しなくても良いということは、多くのプロジェクトの生産性に寄与したのです。今では、殆どの高級言語にこのシステムが搭載されています。フルGCとはGarbageCollectionにより、メモリをプログラマーが管理する必要がなくなり、使い終わった領域は自動的に解放されるようになりました。そこに新たな問題が生まれました。メモリのヒープ領域が足りなくなると、強制的に空き領域を増やす、「フルGC」が発動してしまいます。このフルGCは、怠るとOutOfMemoryエラーを引き起こしてしまうことから、最優先でCPUが割り当てられます。その間、まるでフリーズしてしまったかのようにアプリケーションが応答しなくなってしまうのです。メモリ不足が深刻化した末期には、このフルGCが絶え間なく起こり、最後にはメモリ不足でシステムがクラッシュします。これは、多くの場合メモリを充分に積み、ヒープ領域を多く設定すれば解決される事なのですが、稀にあるリソースの解放漏れや、キャッシュを際限なく溜めていった場合など、プログラム側でのバグに起因するものの場合もあり、追跡は困難を極めることとなります。【java】OutOfMemory発生時の調査方法ヒープ領域設定などが適切に設定されていることが前提です。これらを読む前に、まず-Xmsや-Xmxの値を見直してみてください。19:40まとめGarbageCollectionは、非常に便利なものですが、未だにメモリ管理をプログラマの責任において行わなければならないケースがあります。適切な管理を行うことで、アプリケーションのパフォーマンスを向上させることもできますので、フルGCが起こってしまった場合は、アプリケーションの設計を見直してみましょう。まとめ情報系科目では基礎の基礎である、基数変換についてまとめてみました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。