[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