VisualVmを使用して、Tomcatで実行されているWebアプリケーションのプロファイルを作成しています。Tomcatはメモリ不足エラーでクラッシュし続けるので、アプリケーションで何が原因であるかを把握しようとしています。VisualVmからメモリプロファイラーを実行すると、メモリの大部分がString / Char []によって使用されているように見えますが、これらの文字列の上位レベルのコンテナーを理解できない限り、知識はほとんど役に立ちません。調査を行っているときにOQLを見つけrsizeof()
たので、たとえばSELECT rsizeof(o) FROM instanceof my.package.class o
、どのクラスが必要かわからないので、SELECT it.name, rsizeof(o) FROM instanceof Filter(Heap.classes(), "/my.package./(it.name)");
代わりにそのようなものを実行できるようにしたいと思っていますが、それは機能しません。
では、OQLは何でしょうか?理想的には、トップ10程度に制限し、サイズで並べ替えたいと思います。