を含む多くの言語でこれに気付きました
- C#
- ジャワ
- パイソン
- JS
いくつかのインタープリターによって解釈されている他の多くの言語 (通常はガベージコレクターを持っています)。
システム(unix)でメモリ使用量を確認すると、任意のシステム(多くの異なるサーバーでこれを試しました)。割り当てられた仮想メモリと常駐メモリ (実際に使用されている実際の物理メモリ) の間には大きな違いがあることがわかります。
これは、c や c++ などの言語の場合ではありません。
たとえば、30 MB の常駐メモリを使用する Java アプリケーションは 2 GB の仮想メモリを使用でき、これは他のインタープリター言語でも同様に発生します。もちろん、これは毎回発生するわけではありません (違いはすべての場合でそれほど大きくはありません) が、ほとんどの場合はかなり大きくなります。
またはサンプル (これは実際には実際のデータです) 136MB の常駐メモリと 1661MB の仮想メモリを使用する ac# application MonoDevelop
堅牢な C++ アプリケーションにも例外があります。
これは、仮想メモリに基づいてメモリを制限するすべてのシステムの問題です (OS は、プロセスに割り当てられた仮想メモリの量が実際にそのプロセスで使用できることを保証する必要があるため、これは実際には正しい方法です)。
何故ですか?