phpbar.de logo

Mailinglisten-Archive

[php] Speicherverbrauch bei vielen Objekten mit gleicher Basisklasse

[php] Speicherverbrauch bei vielen Objekten mit gleicher Basisklasse

Andre Gemünd listen at scroogie.de
Die Aug 24 12:23:10 CEST 2004


Carsten Witt wrote:
> Nehmen wir an, diese Basisklasse hat mit Kommentaren 25kB Code.

Die Kommentare spielen schonmal keine Rolle, nach dem Parsen und 
übersetzen sollte davon nichts übrig bleiben. Die Größe des Quelltextes 
ist auch trügerisch, später im ByteCode kann das ganz anders aussehen.

> - Habe ich jetzt 201 Objekte mit gleichem Speicherverbrauch (201*25kB) 
> oder belegen die abgeleitete Klassen mit weniger PHP-Code weniger 
> Speicher, etwa 25kb + 1*2,4kB + 20* (1,9kB + 10* 2,1kB)? Oder spielt die 
> Codelänge fast keine Rolle?

Ich bin mir nicht sicher wie PHP das handhabt, aber ich vermute es ist 
ähnlich wie bei Java. Dort gibt es die Method Area, die von allen 
Threads einer JVM-Instanz genutzt wird, und die statischen 
Klassenvariablen, sowie den Programmcode der Methoden enthält. Für alle 
Instanzen der gleichen Klasse existiert der Code natürlich nur _einmal_ 
in dieser Method Area. Was pro Objektinstanz generiert wird liegt auf 
dem Heap, und sind nur die Instanzvariablen, sowie eine Referenz auf die 
Klasse. Anhand der Codelänge den Speicherbedarf eines Programms 
ausrechnen zu wollen ist also aussichtslos. Die Anzahl der 
Instanzvariablen dürfte da schon eher Aufschluss geben. Aber das der 
objektorientierte Ansatz nicht unbedingt der schlankste/schnellste ist, 
ist ja allgemein bekannt.

Falls PHP gänzlich anders vorgeht würde ich mich freuen wenn jemand die 
Erklärung postet.

Gruß
André

php::bar PHP Wiki   -   Listenarchive