Non avrebbe senso provare a serializzare l'oggetto e leggere la lunghezza della stringa? Ovviamente ci saranno molti bytes perché la stringa serializzata avrà s: 'string', quindi s: '' essendo byte extra ... a meno che serialize non possa essere nello stesso modo in cui PHP memorizza gli oggetti ???
così per esempio
$size = strlen(serialize($object));
Solo un pensiero?
Un altro pensiero disordinato, ma possibilmente preciso:
Ipotizzando una variabile di istanza di classe che è stato manipolato un paio di volte dal esemplificazione:
$DB; // database access class for eg.
$mem = memory_get_usage();
$DB_tmp = clone $DB;
$mem = memory_get_usage() - $mem;
unset($DB_tmp);
$ mem potrebbe essere l'esatta quantità di memoria allocata a $ DB ;
Cosa succede se PHP decide di liberare la memoria che è stata allocata, solo al "momento sbagliato"? Non so davvero quando il PHP libera la memoria (tipo "quando serve", suppongo), ma immagino che questa liberazione potrebbe portare qualche problema? Soprattutto con il garbage collector introdotto da PHP 5.3 per i riferimenti ciclici? –
Beh, sì, ma oltre a ciò che Pascal ha menzionato, voglio essere in grado di scoprirlo in momenti diversi, non solo in fase di allocazione. Voglio trovare questo fuori molte linee lungo la strada. –
@Pascal: PHP non libererà memoria a cui fa comunque riferimento un oggetto attivamente utilizzato. Riferimenti ciclici significa A riferimenti B e B riferimenti A, ma nient'altro fa riferimento ad A o B. Quindi la memoria non verrà liberata fintanto che il programma può comunque farvi riferimento in alcun modo. –