無料/最高の違い。 freeには仮想メモリが表示されますか?

無料/最高の違い。 freeには仮想メモリが表示されますか?

free -m私のシステムには以下が表示されます。

             total       used       free     shared    buffers     cached
Mem:          3954       3842        111          0        248       2585
-/+ buffers/cache:       1008       2945
Swap:         3811          4       3807

したがって、メモリが使い果たされているように見えますが、topメモリごとに並べ替えると、次の親プロセスが表示されます。

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                              
 8891 minecraf  20   0 2374m 277m 9.9m S    1  7.0   0:12.21 java                                                                                                                                                                  
 8704 root      39  19 2802m 272m  11m S    0  6.9   0:28.73 java      

Javaで使用されている仮想メモリは膨大なようですが、オンラインで読むと問題はありません。だから私の質問はこんな感じです。freeそう言えない場合は、なぜ仮想メモリを表示するのですか?

答え1

「Mem」行にはfree仮想メモリ使用量が表示されず、物理メモリ使用量が表示されます。

の「RES」(住民用)と「%MEM」の列はtop同じ内容を示しています。物理各プロセスで使用されるメモリです。

free する使用可能なスワップ領域と使用されたスワップ領域を表示し、top「VIRT」列があります。どちらも重要です。おおまかに言えば、スワップ空間に物理メモリを加えることが可能な総仮想メモリ空​​間です。その制限に達すると、プロセスが終了するか、メモリ割り当てが失敗し始め、状況が悪くなります。

答え2

仮想メモリをファイルまたはライブラリにマッピングできるため、VIRTの量が非常に大きくなる可能性があります。私は〜6gのVIRTメモリを使用していますが、RESidentが59mの小さなJavaアプリケーションを実行しています。

Javaで使用する仮想メモリがものすごく大きいようですが、オンラインで読んでみると問題にならないそうです。

仮想メモリがそれほど重要ではないのは、使用されていない場合、または使用可能な常駐メモリが必要な場合にスワップ領域(ハードディスクストア)にページアウトされるためです。スワップ空間にあるものはほとんど使用されていないか、まったく使用されていませんが、どこかで参照されるためです。 64ビットオペレーティングシステムを使用している場合は、使用するよりも多くのアドレスを処理できるため、仮想メモリマネージャが心配する必要はありません。

このブログ記事には、プログラミングの仮想メモリに関するいくつかのコメントがあります。http://antirez.com/post/what-is-wrong-with-2006-programming.html

まず、よく使うデータをRAMからHDDに変えてはいけません。そのため、Javaが大量のメモリを割り当てることは問題にならないと言われます。

関連情報