修正する

修正する

新しい VM の top は、私のプロセスの 1 つが 100 GB の仮想メモリを消費していることを示しています。私はそれを読んだ。おそらく過度の使用のためしかし、少し多すぎます。特に、物理メモリが6 GB、スワップスペースが2 GB、単一の40 GBハードドライブパーティションしかない仮想マシンでは、このようなことを見たことはありません。

ファントムメモリ

101GB VIRTを使用する興味深いプロセスはEclipse IDE(数分前に開始)で、もう1つは98GB VIRTを使用するWebKitWebProcessです。他のすべてのプロセスのVIRT値は約1〜2 GBです。 3つのツールすべてがこれに同意するようです:top、、htopおよびps

  • プロセスがあまりにも多くの仮想メモリを要求する妥当な理由はありますか?
  • そのような行動はシステムに有害ではありませんか?
  • 現在の総仮想メモリ量の制限はいくらですか?

修正する

詳細:
Linux 4.15.0-38-generic x86_64 GNU/Linux, Linux Mint 19 Tara
Java HotSpot(TM) 64 ビットサーバー VM (ビルド 25.191-b12, 混合モード)
バージョン: 2018-09(4.9.0) 内部バージョンID:20180917-1800

/proc//maps の内容は次に終了します。

00400000-00401000 r-xp 00000000 08:01 132092                             /usr/lib/jvm/java-8-oracle/jre/bin/java
00600000-00601000 r--p 00000000 08:01 132092                             /usr/lib/jvm/java-8-oracle/jre/bin/java
00601000-00602000 rw-p 00001000 08:01 132092                             /usr/lib/jvm/java-8-oracle/jre/bin/java
014fc000-02ebe000 rw-p 00000000 00:00 0                                  [heap]
c0000000-d0000000 rw-p 00000000 00:00 0 
d0000000-100000000 ---p 00000000 00:00 0 
100000000-1012c6000 rw-p 00000000 00:00 0 
1012c6000-140000000 ---p 00000000 00:00 0 
7ef800000000-7ef800004000 rw-p 00000000 00:00 0 
7ef800004000-7ef8000ec000 rw-p 00000000 00:00 0 
7ef8000ec000-7ef800100000 rw-p 00000000 00:00 0 
7ef800100000-7f0800000000 rw-p 00000000 00:00 0 
7f0800000000-7f1000000000 ---p 00000000 00:00 0 

表示された最後の2行が犯人のようです0x7f0800000000 - 0x7ef800100000 ≈ 68.7e9。私が知っている限り、これは権限のないマップされていないプライベートゾーンです。それが私が言うことができるすべてです...

ベストアンサー1

索引付け可能なすべてのファイルをマップする可能性が高いです。何千ものファイルを含む同様のKafkaマッピングを見たことがありますが、通常は仮想スペースがはるかに高くなります(〜10倍)。以下を実行できます。

cat /proc/{PID}/maps

(ここで{PID}はEclipseプロセスIDです。)この場合であることを確認してください。その場合、仮想スペースが大きすぎる場合は、印象が必要になることがありますvm.max_map_countsysctl

おすすめ記事