Comprimir objetos en RAM

Jesus Cea Avion jcea en argo.es
Mie Feb 12 18:01:53 CET 2003


> Así que lo que no me hace falta es comprimir los archivos resultantes
> del cPickle, sino comprimir los objetos 'vivos' en RAM directamente.

Esto lo veo complicado a menos que uses objetos "proxies". Es decir, no
referencias a un objeto, sino a un "proxy" del objeto. Ese proxy
contiene una referencia al objeto "real", o una versión "comprimida" del
mismo. Cuando el proxy intenta acceder, si la referencia es al objeto
real, delega el acceso tal cual. Se es un objeto comprimido, regenera el
objeto original y delega.

Los proxies a objetos que hace tiempo que no se usan, pueden eliminar la
referencia al objeto real y comprimirlo.

En cierto modo, los proxies se usarían como "weakref".

Realmente esto me parece más complicado de lo necesario. Si tienes
memoria suficiente, puedes tener muchos objetos entre la RAM y el SWAP,
de forma transparente. Los objetos más utilizados estarán en RAM, y los
que hace rato que no se usan, acaban en el SWAP, sin tener que hacer
nada especial.

En realidad la paginación funciona a nivel de páginas, por lo que puede
darse el caso de que una misma página contenga objetos "calientes" y
"frios", pero si tu "working set" < RAM, no deberías tener problemas. Y
todo transparente. Y se me antoja que hay pocas aplicaciones "normales"
que requieran más uno o dos gigabytes de objetos, en RAM...

-- 
Jesus Cea Avion                         _/_/      _/_/_/        _/_/_/
jcea en argo.es http://www.argo.es/~jcea/ _/_/    _/_/  _/_/    _/_/  _/_/
                                      _/_/    _/_/          _/_/_/_/_/
PGP Key Available at KeyServ   _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz




Más información sobre la lista de distribución Python-es