3

Snow Leopard(64ビットマシン)で32ビットのコンパイル済みバージョンのPythonを実行している単一のプロセスが、topコマンドで見られるように4GB(たとえば5.4GB)を超える仮想メモリを消費しているように見える可能性はありますか?

file ...pythonバイナリがx86ではないことを確認しましたが、5GBを超えるメモリを消費しているように見えました。

私の推測では、使用されたライブラリ(RPy)はデータのチャンクを「mmap」しており、メモリ内キャッシュは私のプロセスのメモリフットプリントの下に表示されていました。

または、Pythonバイナリが32ビットであることを確認していない可能性があります。あるいは、32ビット/ 64ビットの混合が行われているかもしれません(libffi?)。

完全に混乱しています。

4

2 に答える 2

2

いいえ、それは物理的に不可能です。これは、アライメントと断片化のためにOSが使用できる以上の割り当てを停止することはありません。たとえば、ページ全体があり、実際にはすべてのページにマップされていない可能性があります。ただし、実際に4GBを超えるプロセスを使用することは不可能であり、カーネルスペースの場合よりも大幅に少ない可能性があります。

于 2010-07-25T19:17:55.353 に答える
1

プロセスが何らかの非常識な long/far/extended ポインターを使用し、必要に応じて 32 ビット アドレス空間にデータをマッピングしたり、32 ビット アドレス空間からデータをマッピングしたりしている場合は可能ですが、その時点ではとにかく 32 ビットと見なされることはほとんどありません(Pythonは間違いなくこれをしないので、@DeadMGの答えはほぼ確実に実際に起こっていることです。)

于 2010-07-27T20:00:16.097 に答える