[python] odpověď Alokace pameti

martin jirasek jertin na seznam.cz
Čtvrtek Prosinec 25 23:17:35 CET 2008


Dobrý večer,
je to velmi zajímavé, u mne na počítači hodnota 120MB klesne sice na 90MB, ale i tak je to velice zajímavé. 
Pokud někdo přijde s řešením  budu velmi rád, jinak je to na kontaktování python.org =)
<  ------------ Původní zpráva ------------
<  Od: slush <slush na slush.cz>
<  Předmět: [python] Alokace pameti
<  Datum: 25.12.2008 18:46:49
<  ----------------------------------------
<  Zdravim,
<  
<  narazil jsem na problem, ktery nedokazu vysvetlit. Mozna je nekde chyba, ale
<  mnohem pravdepodobneji jen neco delam spatne ja. Jedna se o abnormalni
<  "nenazranost" pythonu a o nasledne neuvolnovani pameti pote, co naalokovanou
<  pamet jiz nepotrebuji.
<  
<  V priloze zasilam jednoduchy skript,ktery nejdrive naalokuje seznam o delce
<  10 mil. zaznamu, nasledne seznam smaze (nastavenim seznamu na nulovou delku)
<  a opet ho naalokuje. Cekal bych, ze pametova narocnost bude nekde v rozmezi
<  desitek MB (tedy v prumeru do 10 bytes na jednu polozku ciselneho seznamu) a
<  ze po uvolneni seznamu dojde ke zmenseni obsazene pameti na predchozi
<  uroven.
<  
<  Problem 1) Python si pro 10 mil. číselných záznamů naalokoval cca 160 MB.
<  Problem 2) Po odalokovani klesla spotreba pameti na 120MB
<  
<  Podle hrubych internich vypoctu mi vychazi, ze ten 40MB rozdil je uvolneni
<  datovych struktur primo spojenych s ulozenym seznamem a po uvolneni seznamu
<  opravdu dochazi k odalokovani. Neni mi ale jasne, co obsahuje zbyvajicich
<  120MB.
<  
<  Zkousel jsem do tohoto skriptu zapracovat i spravu garbage collectoru (model
<  gc). Bohuzel, po odalokovani pameti gc neobsahoval zadne informace o zabrane
<  pameti,ackoliv skript stale konzumoval 120 MB.
<  
<  Prilozeny skript a vyse obsazenych prostredku jsem overoval pod Linuxem a
<  Windows Vista, v obou pripadech se stejnym vysledkem (v Linuxu byla celkova
<  spotreba o cca 4 MB mensi).
<  
<  Hlavni otazkou tedy je, jestli je toto chovani normalni, respektive jestli
<  lze nejak ridit spotrebu pameti pythonem.
<  
<  Diky za kazdy tip,
<  Marek
<  
<  
<  


Další informace o konferenci Python