Articles of recolección de basura

Entendiendo gc.get_referrers

Estoy tratando de rastrear una pérdida de memoria en Python (2.7). He encontrado gc.get_referrers, pero no entiendo la salida. Después de eliminar dying_node (que debería eliminar todas las referencias excepto una lista que he creado como parte de mi búsqueda), tengo en mi código: gc.collect() print “done dying: “, getrefcount(dying_node) #note, includes the reference from […]

Varios objetos de alguna manera interfieren entre sí

Tengo una neural network (NN) que funciona perfectamente cuando se aplica a un único conjunto de datos. Sin embargo, si quiero ejecutar la NN en, por ejemplo, un conjunto de datos y luego crear una nueva instancia de la NN para ejecutar en un conjunto diferente de datos (o incluso el mismo conjunto de nuevo), […]

¿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 […]