Zdravim,<br><br>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.<br>
<br>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.<br>
<br>Problem 1) Python si pro 10 mil. číselných záznamů naalokoval cca 160 MB.<br>Problem 2) Po odalokovani klesla spotreba pameti na 120MB<br><br>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.<br>
<br>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.<br><br>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).<br>
<br>Hlavni otazkou tedy je, jestli je toto chovani normalni, respektive jestli lze nejak ridit spotrebu pameti pythonem.<br><br>Diky za kazdy tip,<br>Marek<br>