プログラムで使用されているオブジェクトを視覚化するツールはありますか?
-
22-07-2019 - |
質問
これがどれほど役立つかはわかりませんが、プログラムで使用されているオブジェクトと、どのオブジェクトがどこから参照されているかを視覚化するのは適切だと思いました。 graphvizのようなプログラムで使用されるデータを生成すると推測しています。これを行うツールはありますか?そうでなければ、自分でこれを行うのはどれほど難しいでしょうか?理想的にはこれは任意のプログラムで機能しますが、必要に応じてコードにいくつかの変更を加えることができます(dumpObjects()呼び出しなどを追加するなど)
Javaでこれを行うことに興味がありますが、他の言語の解決策がある場合はそれらも投稿してください。
解決
プロファイラーを使用すると、実行時に作成されるオブジェクトを確認できます。これは、たとえばJProfilerの出力です:
(source: ej-technologies.com )
他のヒント
Sunは、メモリとプロセスのプロファイリングを含む VisualVM を開発しました。また、OSGiなどのテクノロジーのプラグインもサポートしています。
興味深い使用例は、メモリ分析と最適化です。これがまさに Eclipse MAT の目的です。確認してください。
代替テキストhttp://dev.eclipse.org /blogs/memoryanalyzer/files/2008/05/dom_tree.gif
グラフ構造の視覚化(オブジェクトグラフを含む)には、GraphVizに基づいた多くのツールがあります: http://www.graphviz.org/
クラスとオブジェクトを3Dで表示するオブジェクトグラフビジュアライザーがあります。現在のところ、初期化を自動化するAPIがありませんが、この機能を追加するのはそれほど難しくないはずです。 ソースコードも Github にあります。
編集:明らかにその方向で行われている作業があります: https://eprints.hsr.ch/491/
それがあなたが目指しているものかどうかはわかりませんが、 doxygen はほとんどすべてを行います。
これは、コードのコンパイルのヒープを取り、相互参照されたhtml、pdfのrtfに変換します。 completedは、各関数のツリーを呼び出し、"によって参照されます"各変数について