複数のスレッドを実行するアプリケーションを作成しており、これらのスレッドの CPU/メモリ使用量を抑制したいと考えています。
C++ についても同様の質問がありますが、可能であれば C++ と JNI の使用を避けたいと考えています。高水準言語を使用するとこれが不可能になる可能性があることは承知していますが、誰かアイデアがあるかどうか知りたいです。
編集:賞金を追加しました。これについては、本当によく考え抜かれたアイデアが欲しいです。
編集 2:これが必要な状況は、サーバー上で他の人のコードを実行することです。基本的に、これは完全に任意のコードであり、唯一の保証はクラス ファイルに main メソッドがあることです。現在、複数の完全に異なるクラスが実行時にロードされ、別々のスレッドとして同時に実行されています。
書かれているように、実行されるクラスごとに個別のプロセスを作成するためにリファクタリングするのは面倒です。それが VM 引数を介してメモリ使用量を制限する唯一の良い方法である場合は、それで問題ありません。しかし、スレッドでそれを行う方法があるかどうか知りたいです。別のプロセスであっても、CPU 使用率を何らかの方法で制限できるようにしたいと考えています。前述したように、これらのプロセスのいくつかは一度に実行されるからです。無限ループがすべてのリソースを占有することは望ましくありません。
編集 3:オブジェクトのサイズを概算する簡単な方法は、Java のInstrumentationクラスを使用することです。具体的には、getObjectSize メソッドです。このツールを使用するには、特別な設定が必要であることに注意してください。