私はMac OS X El CapitanとUbuntu 16.04 LTSで動作している2台のコンピュータを持っています。どちらもJava SDK 1.8.0_101がインストールされています。Java on osx - xmxが無視されましたか?
私が利用できるより多くのメモリでのUbuntu上のゲームサーバを起動しようとすると、私は次のような出力が得られます。
$ java -Xms200G -Xmx200G -jar craftbukkit.jar nogui
Loading libraries, please wait...
:私はこのエラーを取得していないMac OSで
$ java -Xms200G -Xmx200G -jar craftbukkit.jar nogui
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f9b6e580000, 71582613504, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 71582613504 bytes for committing reserved memory.
# An error report file with more information is saved as:
#
両方のコンピュータに8GBのメモリがあります。他のアップルコンピュータでも同じことを試みました。
これはjava macバージョンのバグですか?
(1ギガバイトに例えばメモリ使用量を制限する強制する方法はありますか?-Xmx1Gは動作しませんし、私は別の理由を見つけることができませんでした。ここではありませんどちらもグーグルに)
ありがとうございました!
私の悪い英語のために申し訳ありません...
linuxには「固定」スワップの概念があります。メモリの容量は物理RAM +スワップファイルに基づいています。 OSXは必要に応じてスワップファイルを追加し続けるだけです(ディスク領域がなくなるまで)。結果として、あなたがLinuxよりも多くのメモリを要求した場合、OSXは実際にスペースを使い始めるまで、OSXはokと言うでしょうが、失敗するでしょう。リソースが不足する可能性があります。最大サイズを指定すると、jvmにその制限が適用されます。 – Petesh
@Peteshそれは答えとしてうまくいくようです。 –
OS Xはディスク上にスワップファイルを割り当てるだけでなく、メモリを圧縮します。これにより、圧縮された状態で実際にどれくらいのメモリが占有されているかを判断することができなくなります。 – Palle