Articles of recolección de basura

¿Formas de liberar la memoria de vuelta al sistema operativo desde Python?

Tengo un código que se parece a esto: def memoryIntensiveFunction(x): largeTempVariable = Intermediate(x) processFunction(largeTempVariable,x) El problema es que la variable temp es algo así como 500 mb en un caso de prueba mío, pero ese espacio no se devuelve al sistema operativo cuando finaliza memoryIntensiveFunction . Lo sé porque los perfiles de memoria con la […]

¿Cómo evito la pérdida de memoria cuando cargo archivos de gran tamaño en un bucle for?

Tengo 50 archivos pickle de 0.5 GB cada uno. Cada archivo pickle se compone de una lista de objetos de clase personalizados. No tengo problemas para cargar los archivos individualmente usando la siguiente función: def loadPickle(fp): with open(fp, ‘rb’) as fh: listOfObj = pickle.load(fh) return listOfObj Sin embargo, cuando bash cargar de forma iterativa los […]

¿Una basura de list_iterator recolecta sus valores consumidos?

Supongamos que tengo li = iter([1,2,3,4]) . ¿El recolector de basura caerá las referencias a un elemento inaccesible cuando haga lo next(li) ? ¿Y qué pasa con el deque ¿Los elementos en di = iter(deque([1,2,3,4])) serán coleccionables una vez consumidos? Si no, una estructura de datos nativa en Python implementa tal comportamiento.

Pérdida de memoria en Python Twisted: ¿dónde está?

Tengo un servidor Twisted bajo carga. Cuando el servidor está bajo carga, el uso de la memoria aumenta y nunca se reclama (incluso cuando no hay más clientes). La próxima vez que se cargue, el uso de la memoria aumenta nuevamente. Aquí hay una instantánea de la situación en ese punto: La memoria RSS es […]

Python json memoria bloat

import json import time from itertools import count def keygen(size): for i in count(1): s = str(i) yield ‘0’ * (size – len(s)) + str(s) def jsontest(num): keys = keygen(20) kvjson = json.dumps(dict((keys.next(), ‘0’ * 200) for i in range(num))) kvpairs = json.loads(kvjson) del kvpairs # Not required. Just to check if it makes any […]

¿Es esta una pérdida de memoria?

Estoy usando el módulo gc para depurar una fuga. Es un progtwig gui y he conectado esta función a un botón. He establecido la depuración más establecida en gc.SAVE_ALL > gc.collect() > > print gc.garbage y esta es la salida [(,), {‘__module__’: ‘ctypes._endian’, ‘__dict__’: , ‘__weakref__’: , ‘_length_’: 3, ‘_type_’: , ‘__doc__’: None}, , , […]

¿Qué es una buena biblioteca para hacer geometría computacional (como CGAL) en un lenguaje de recolección de basura?

Necesito una biblioteca para manejar la geometría computacional en un proyecto, especialmente las operaciones booleanas, pero casi todas las características son útiles. La mejor biblioteca que puedo encontrar para esto es CGAL , pero este es el tipo de proyecto que dudaría en hacer sin recolección de basura. ¿Qué pares de idiomas / bibliotecas me […]

¿Por qué los métodos de recolección de basura de Java y Python son diferentes?

Python utiliza el método de conteo de referencia para manejar el tiempo de vida del objeto. Así que un objeto que ya no tiene más uso será destruido inmediatamente. Pero, en Java, el GC (recolector de basura) destruye objetos que ya no se utilizan en un momento específico. ¿Por qué Java elige esta estrategia y […]

La memoria asignada a Python no se libera en Linux incluso después de gc.collect ()

He escrito código en Python que no libera la memoria como debería. Python toma la memoria, pero nunca se libera, incluso después de no ser utilizada más. Incluso si rompes el progtwig en ejecución con ctrl + c. Elimine la variable y ejecute gc.collect () que no parece recostackr. O lo mismo que en Ipython […]

Comportamiento del recolector de basura de Python en objetos compuestos

¿El recolector de basura de Python limpia un objeto compuesto si algunas de sus partes aún están referenciadas? p.ej def foo(): A = [ [1, 3, 5, 7], [2, 4, 6, 8]] return A[1] B = foo() ¿Será A[0] basura recolectada? ¿Hay alguna forma de confirmar lo mismo a través del código?