だから、タイトルは私に答えるために必要なほとんどすべてを説明しています。もう1つだけです。私が開発しているアプリはUbuntuAppShowdownの一部であるため、デフォルトでPythonがインストールされているライブラリについて返信してください。
Python 2.7、Ubuntu12.04を実行しています。
だから、タイトルは私に答えるために必要なほとんどすべてを説明しています。もう1つだけです。私が開発しているアプリはUbuntuAppShowdownの一部であるため、デフォルトでPythonがインストールされているライブラリについて返信してください。
Python 2.7、Ubuntu12.04を実行しています。
計算がほぼ不可能で、価値がほとんどない数値を求めています。
一定期間実行されているLinuxシステムでは、「無料の」RAMはほとんど利用できません。ただの猫/proc/meminfo
-MemFree
エントリは通常、ほんの数メガバイトのオーダーです。
それで、その記憶はどこに行きましたか?
カーネルは、初心者のために、すべてのディスクアクセスをキャッシュします。これは通常、Cached
エントリに表示されます。より多くのメモリが必要になるとディスクキャッシュが削除されるため、その数をに追加できMemFree
ます。
ただし、アプリケーションが(malloc()
Cで)2ギガバイトを正確に2ギガバイトのRAMを搭載したシステムに割り当てる場合、通常はそれが許可されます。つまり、有効なポインターが返されます。ただし、RAMは実際にはアプリケーション用に予約されていません。これは、アプリケーションがメモリページにアクセスし始めたときにのみ発生します。タッチされた各ページが割り当てられます。あなたが求めることができる最大サイズはとして利用可能ですCommitLimit
。
ただし、アプリケーションコード自体もRAMにない可能性があります。バイナリファイルとライブラリはmmapp()されているため、タッチされたページのみがRAMにロードされます。
次のようなツールを実行するtop
と、VIRT、RES、SHRなど、プロセスごとにあらゆる種類のメモリ情報を取得できます。
では、使用可能なメモリの量を知ることの価値は何ですか?システムよりもはるかに多くのRAMを必要とする可能性のあるアプリケーションを起動できますが、それでも実行されます...アプリケーションを2回または3回実行できる場合もあります-コードページはとにかく共有されます...
注:上記の回答はかなりの数のコーナーをカットします。実際のメカニズムはかなり複雑です。そして、私はスワップスペースをストーリーに取り入れ始めていません。しかし、これはあなたのためになります、私は願っています...