¿No tendría sentido intentar serializar el objeto y leer la longitud de la cadena? Obviamente, estará varios bytes desactivados porque la cadena serializada tendría s: 'string' por lo tanto s: '' son bytes adicionales ... a menos que serialize podría ser de la misma manera que PHP almacena objetos ???
así por ejemplo
$size = strlen(serialize($object));
Es sólo una idea?
Otra desordenado, pero posiblemente precisa pensamiento:
Suponiendo una variable de instancia de clase que ha sido manipulado unas cuantas veces desde instancias:
$DB; // database access class for eg.
$mem = memory_get_usage();
$DB_tmp = clone $DB;
$mem = memory_get_usage() - $mem;
unset($DB_tmp);
$ mem podría ser la cantidad exacta de memoria asignada a $ DB ;
¿Qué pasa si PHP decide liberar la memoria que se mantuvo asignada, solo en el "momento equivocado"? Realmente no sé cuándo PHP libera memoria (tipo de "cuando sea necesario", supongo), pero supongo que esta liberación podría traer algunos problemas. ¿Especialmente con el recolector de basura introducido por PHP 5.3 para referencias cíclicas? –
Bueno, sí, pero además de lo que mencionó Pascal, quiero ser capaz de descubrir esto en diferentes momentos, no solo en el momento de la asignación. Quiero descubrir esto muchas líneas en el camino. –
@Pascal: PHP no liberará la memoria que todavía hace referencia a un objeto que se está utilizando activamente. Las referencias cíclicas significan A referencias B y B hacen referencia a A, pero ninguna otra cosa hace referencia a A o B. Por lo tanto, la memoria no se liberará mientras el programa aún pueda hacer referencia a ella de cualquier manera. –