Weekly Shaarli
Week 11 (March 13, 2023)
La cigogne depuis des millénaires ayant fort à faire,
commence avec les années à un peu s'épuiser.
Il faut dire qu'en France depuis la Libération,
des bébés à foison elle a dû augmenter la production.
Alors pour la seconder et l'aider à faire pousser en bonne santé de jolis bambins,
elle a organisé de beaux et grands jardins.
Derrière ce joli parchemin c'est aussi les mères qu'il fallait envoyer au turbin.
C'est ainsi qu'au fil des découvertes en éducation,
fleurirent de jolis appellations : asile, pouponnière, bambina, garderie, jardin d'enfants, crèche multi-accueil, etc.
Des lieux pensés pour accompagner les avancées de la société en parentalité.
Pendant fort longtemps ces jardins idylliques, tels des ruches animées par moult abeilles laborieuses, par les deniers publics furent-ils financés.
Vivent les citoyens en barboteuse !
Or par les temps nouveaux qui sévissaient alors,
point d'argent public gaspillé il ne fallait puiser encore.
C'est ainsi qu'un beau jour de 2004,
aux mains philanthropes de quelques marchands psychopathes,
le grand argentier des cigognes, les clés des portes des jardins leur a filé.
De bébés et de blé ce sont de bien étranges moissons qui dorénavant rythment nos saisons.C'est ça que j'ai envie de vous raconter aujourd'hui :
comment cette fable elle a été rendue possible.
Une passionnante conférence gesticulée, actuellement en tournée !
This describes tools and techniques that can identify memory leaks in Long running Python programs:
- Is it a Leak?
- Sources of Leaks
- A Bit About (C)Python Memory Management
- Reference Counts
- Garbage Collection
- The Big Picture
- CPython’s Object Allocator (pymalloc)
Here is a visualisation of memory allocators from top to bottom (from the Python source Objects/obmalloc.c):
_____ ______ ______ ________
[ int ] [ dict ] [ list ] ... [ string ] Python core |
+3 | <----- Object-specific memory -----> | <-- Non-object memory --> |
_______________________________ | |
[ Python's object allocator ] | |
+2 | ####### Object memory ####### | <------ Internal buffers ------> |
______________________________________________________________ |
[ Python's raw memory allocator (PyMem_ API) ] |
+1 | <----- Python memory (under PyMem manager's control) ------> | |
__________________________________________________________________
[ Underlying general-purpose allocator (ex: C library malloc) ]
0 | <------ Virtual memory allocated for the python process -------> |
=========================================================================
_______________________________________________________________________
[ OS-specific Virtual Memory Manager (VMM) ]
-1 | <--- Kernel dynamic storage allocation & management (page-based) ---> |
__________________________________ __________________________________
[ ] [ ]
-2 | <-- Physical memory: ROM/RAM --> | | <-- Secondary storage (swap) --> |