3 Stimmen

Kann ein Prozess, der eine 32-Bit kompilierte Binärdatei ausführt, mehr als 4 GB Speicher verwenden?

Ist es möglich, dass ein einzelner Prozess, der eine kompilierte 32-Bit-Version von Python in Snow Leopard (64-Bit-Maschine) ausführt, scheinbar mehr als 4 GB (sagen wir 5,4 GB) an virtuellem Speicher verbraucht, wie durch den Befehl top angezeigt?

Ich habe eine file ...python um zu sehen, dass es sich nicht um ein x86-Programm handelt, das jedoch mehr als 5 GB Speicher zu verbrauchen scheint.

Meine Vermutung ist, dass die verwendeten Bibliotheken (RPy) Datenblöcke "mmap "ing, und der In-Memory-Cache wurde unter dem Speicher-Footprint meines Prozesses angezeigt.

Oder vielleicht habe ich nicht überprüft, ob die Python-Binärdateien 32-Bit sind. Oder vielleicht gibt es einige 32-Bit/64-Bit Vermischung gehen (libffi?).

Völlig verwirrt.

2voto

Puppy Punkte 141483

Nein, das ist physikalisch unmöglich. Das hält das Betriebssystem nicht davon ab, mehr zuzuweisen, als es aufgrund von Ausrichtung und Fragmentierung nutzen kann, z. B. könnte es eine ganze Seite haben und nicht alles abbilden. Es ist jedoch unmöglich, mehr als 4 GB für einen Prozess zu verwenden, und höchstwahrscheinlich wesentlich weniger als das für den Kernel-Speicher.

1voto

David X Punkte 3618

Sie ist möglich wenn der Prozess irgendeine Art von verrückten Lang-/Fern-/Erweiterungszeigern verwendet und Daten in und aus einem 32-Bit-Adressraum abbildet, wie er sie braucht, aber zu diesem Zeitpunkt kann er ohnehin kaum als 32-Bit bezeichnet werden. (Python tut das ganz sicher no dies tun, also ist die Antwort von @DeadMG mit ziemlicher Sicherheit das, was tatsächlich passiert).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X