1

メモリ使用量に制限のあるlruキャッシュを使用しています。lruキャッシュには、ハッシュマップとリンクリストの2つのデータ構造が含まれています。ハッシュマップはキャッシュオブジェクトを保持し、リンクリストはキャッシュオブジェクトのアクセス順序の記録を保持します。Javaオブジェクトのメモリ使用量を判断するために、オープンソースツールであるClassmexerエージェントを使用します。Classmexerエージェントは、http: //www.javamex.com/classmexer/にある単純なJavaインストルメンテーションエージェントです。

http://sizeof.sourceforge.net/でSizeOfという名前の別のツールを試します。

問題は、パフォーマンスが非常に高いことです。オブジェクトサイズを測定するための1回の操作の時間コストは約1.3秒であり、非常に低速です。これにより、キャッシングのメリットをゼロにすることができます。

生きているときにJavaオブジェクトのメモリサイズを測定する他の解決策はありますか?

ありがとう。

4

3 に答える 3

1

リフレクションを使用してネストされたサイズを取得する必要があるため、正確なバイト値を取得するのはコストがかかりますが、それは可能です。

Javaで、オブジェクトのサイズを決定する最良の方法は何ですか?

http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html

于 2012-01-23T16:40:35.417 に答える
0

Since you already have a tool that does it...the reality is that there's no fast way to do this in Java.

于 2012-01-23T17:23:26.147 に答える
0

これを見てください: Java 配列のメモリ使用量を計算する方法 おそらく分析に役立つでしょう。

于 2012-01-23T16:21:48.983 に答える