2Gスタックサイズのlinuxでプログラムを起動しようとすると、JVMはメモリ不足のエラーで直ちに終了するという問題があります。 -Xss2Gを使用した場合のJVM OutOfMemoryError
この
は、メモリ不足の例外のうちに終了し、これらのフラグはすぐにJVMを引き起こす-Xmx8G -Xss2047m
問題なく動作します
-Xmx8G -Xss2048m
ボックスはとても実行している他のメモリの32ギガバイトとほとんど何もしています私は利用可能なメモリが実際に使い果たされていないと確信しています。私はある種のシステム制限があると仮定していますが、私はそれが実際に何であるかを調べるのに苦労しています。
私はRHEL 7.4を実行しているとOpenJDKの1.8.0_151「のulimit -a」の
出力使用しています:私はそれをフルに実行するために取得するために微調整する必要があるかについて
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127929
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 8192
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
任意のアイデアを2GB以上?
あなたはどのように多くのスレッドを持っていますか? –
これは単なるスレッド化されたネイティブプロセスを起動する単なるラッパーです。かなり少数のスレッド。 – brainchrist
-Xssは** per thread **です.JVM自体によって開始されたバックグラウンドスレッドにも適用されます。とにかにネイティブプロセスをラッピングするのであれば、なぜ2Gスタックが必要でしょうか? – jingx