私はネイティブライブラリを使用するJavaプロセスを持っています。このネイティブライブラリはかなりリソースが重く、多くのRAMを消費します。さらに、いくつかのコーナーケースについては、それは完全に私の記憶をすべて取り、私のシステムを完全に凍結します。JNIとサブプロセスメモリの上限を設定する
アプリケーションがこれらの奇妙なコーナーケースでちょうどクラッシュした場合は、いいでしょう。しかし、例外がスローされる可能性がある場合、それはさらに良いでしょう。このJNIライブラリへの呼び出しとサブプロセスの実行にメモリ制限を指定する方法はありますか?
私はLinuxでulimit -vを試してみましたが、うまくいきませんでした。理想的には、プログラムは他のプラットフォームでも動作する必要があるので、私はよりポータブルなソリューションを望んでいます。
私が知っている本当の解決策はありません。もしもこのライブラリがどのように機能しているのか分かっていれば、何とかそのメモリの使い方に介入して失敗を 'malloc()'呼び出しに返すことができます。しかし、あなたの動作の説明から、このライブラリは扱いにくいでしょうこのような障害はうまく戻ってしまい、結果的にクラッシュやデータの破損を招くことになります。移植可能なクロスプラットフォームソリューションはさらに難しくなります。 IMOはJVMをLD_PRELOADまたはDLLインジェクションと一緒に介入させ、同時に火災とガソリンを使ってプレイしています。不正な第三者図書館が反物質を追加します。 –