11.07.2015 Views

versión color - PET: Python Entre Todos - Python Argentina

versión color - PET: Python Entre Todos - Python Argentina

versión color - PET: Python Entre Todos - Python Argentina

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

82 FragmentaciónSí y no.Usan arenas. Que no es de donde sale el vidrio, sino una mezcla entre pools, listaslibres y malloc.Para objetos pequeños, <strong>Python</strong> mantiene una lista de pools por cada tamaño concreto(recordemos que los pools necesitan objetos del mismo tamaño pues son vectores).Cada pool tiene su lista libre, y cada pool tieke 4Kb de tamaño. Esto toma el nombrede arena.Para objetos grandes (más de 256 bytes), <strong>Python</strong> llama a malloc directamente.Como los tamaños de objetos de <strong>Python</strong> crecen de a 8 bytes (por su estructura),entonces hay exactamente 32 arenas.<strong>Todos</strong> los objetos de <strong>Python</strong> se crean con este mecanismo de arenas, incluso los queusan listas libres.Las arenas también introducen un problema de fragmentación interna, puesto queningún bloque de la arena puede ser liberado hasta que todos los objetos que vivenen él sean liberados.FragmentaciónAhora, veamos lo que es la fragmentación de memoria:Mapeo de una memoria fragmentadaSi negro es espacio usado, y blanco es espacio libre, se puede ver aquí como haymucho espacio libre pero es inusable para objetos más allá de un determinadotamaño, por no ser espacio libre contiguoPuesto simple, la fragmentación de memoria se produce cuando hay mucho espaciolibre, pero no es contiguo. Como en el mapa de memoria que se ve arriba, hay mucho{footer} — http://revista.python.org.ar

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!