2

私の Java アプリケーションは、ユーザーの JavaScript コードを実行する必要があります。アプリケーションをスクリプトの誤動作 (意図的ではない可能性があります) から保護する必要があります。API 呼び出しの制限を実装し、無限ループの可能性に対する時間制限を追加しました。ただし、スクリプト内でオブジェクト、配列要素などを割り当てすぎたために発生する可能性のある OutOfMemory エラーに対する保護は見つかりませんでした。

現在、私には2つのアイデアしかありません:

  • シェル スクリプト内でアプリケーションを呼び出し、OOM で失敗した場合は何らかの方法でその状態を復元します。

  • Context#observeInstructionCount をインターセプトし、割り当てられたメモリ量が危険なほど増加していないことを頻繁に確認します。

どちらの亜種も非常にあいまいで愚かなので、もっとスマートなものが欲しいです。

4

1 に答える 1

1

これを行う唯一の方法は、JavaScript コードを別のプロセスで実行し、-Xmxその JVM のパラメーターを設定することです。

于 2012-10-13T06:19:16.400 に答える