2

私は、JavaMOAフレームワークで実行されるJavaクラスを作成しています。このクラスには、ポイントのストリームをクラスター化する関数があります。このクラスはMOAアプリケーションによって呼び出されます。このクラス(MOAアプリケーションで使用されるメモリを除く)の合計メモリ(少なくともヒープで使用されるメモリ、スタックメモリを除外できます)を制限したいと思います。

出来ますか?クラスがインスタンス化され、MOAアプリケーションによって呼び出されていることが明確になっていることを願っています。最初にMOAアプリケーションを実行してから、GUIからmyclassを実行してクラスタリングを実行することを選択しています。このため、-XmxなどのJVMオプションは機能しません。

4

2 に答える 2

3

ロジックをクラスに埋め込んで、Runtime.freeMemory() と Runtime.maxMemory() を一定間隔でチェックし、制限に近づいているように思われる場合に手順 (キャッシュのフラッシュなど) を実行できます。プラットフォームが異なれば、ヒープ統計の報告も異なるため、少し「不確か」です。

「オプションの」ストレージの一部に SoftReference スキームを使用することもできます。その後、ヒープが必要な場合、GC はオブジェクトを削除します。(ただし、このスキームはハンマーを使用して蚊をたたきます。)

もちろん、オブジェクトの割り当てを単純に数えることもできます。

于 2011-06-03T11:33:27.817 に答える
0

JVM のメモリ使用量をグローバルにのみ制限できます。

クラスの使用を制限するには、別の JVM を開始し、そのクラスを新しい JVM で使用する必要があります。

ただし、通常は、クラスがメモリを使いすぎないようにコードを修正することをお勧めします。;)

于 2011-06-03T11:18:33.440 に答える