問題タブ [setrlimit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - main() 内でシステム リソース制限が設定されていると、Java JNA アプリケーションがクラッシュする
大きな 1D 配列 (~1G) の要素の合計を計算する必要がある JNA アプリケーションがあります。JNA Resource.Rlimit クラスを使用すると、次のスニペットに示すようにリソース制限を増やすことができます。
ただし、これは、大きな配列を割り当てるメソッド内でスタック サイズが設定されている場合にのみ機能します。したがって、以下のコードを実行すると、メモリ不足の例外はありません。
しかし、リソース制限が main() 内で設定され、メソッド Test1() が呼び出されると、プログラムがクラッシュします。
Test1() を呼び出す前に main() のスタック サイズを増やすことができないのはなぜですか。このプロジェクトは、8GB RAM を搭載した Ubuntu 16.04 amdx86-64 上の IntelliJ Idea (コミュニティ バージョン 2019.3) で作成されました。
linux - setrlimit を使用して、mmap が 64 GB の範囲内で VA を返すように強制できますか?
私は ARM64 サーバーで作業しており、古いプログラムを機能させようとしています。ソースコードは必要ありません。バイナリだけです。
バイナリは、48 ビット仮想アドレス (VA) をサポートしない LuaJit を使用します。ただし、私のカーネルは 48 ビット VA を使用しています。
LuaJit は mmap を使用してメモリを割り当てます。
mmap が常に 47 ビット以下の VA を返すようにしたい。setrlimit がプロセスの仮想アドレス範囲を制限できることに気付きました。クォータに関するものですか、それとも VA スペースの制限を強制するものですか?
VA 範囲を制限する場合は、動的ライブラリをプリロードして setrlimit を呼び出して mmap を呼び出すことができると思います。