Sí, una instancia de int
ocupa 12 bytes en su sistema. Los enteros (como cualquier objeto) tienen atributos, es decir, punteros a otros objetos, que ocupan espacio de memoria adicional más allá de lo que usa el propio valor del objeto. Entonces 4 bytes para el valor entero, 4 bytes para un puntero a __class__
(de lo contrario, Python no sabría a qué tipo pertenecía el objeto y cómo comenzar a resolver los nombres de atributo que se heredan de la clase int
y sus padres), y otro 4 para el recuento de referencia del objeto, que utiliza el recolector de basura.
El tipo int
ocupa 436 bytes en su sistema, que serán punteros a los diversos métodos y otros atributos de la clase int
y cualquier otra información de mantenimiento que Python requiera para la clase. La clase int
está escrita en C en la implementación estándar de Python; podrías ir a ver el código fuente y ver qué hay allí.
posible duplicado de [¿Cómo perfilo el uso de memoria en Python?] (Http://stackoverflow.com/questions/552744/how-do-i-profile-memory-usage-in-python) –
También, [ este]] (http://stackoverflow.com/questions/110259/python-memory-profiler). Básicamente, la herramienta vinculada allí (Heapy) es parte de una tesis sobre perfiles de memoria en Python. Si realmente quieres saber, mira eso. –