Господа программисты, подскажите пожалуйста, почему Tk не освобождает память после уничтожения виджетов?
Вот, например, такой код.
package require Tk
package require Iwidgets
# Main form
ttk::button .launch -text "Launch" -command {createFrm}
ttk::button .exit -text "Exit" -command {destroy .}
pack .launch .exit
proc createFrm {} {
# Create new toplevel and fill it with grided entryfields
toplevel .frm
set ::i 0
while {$::i <= 50} {
# Widgets
::iwidgets::entryfield .frm.enFirst$::i
::iwidgets::entryfield .frm.enSecond$::i
# Geometry
grid .frm.enFirst$::i .frm.enSecond$::i -padx 5 -row $::i
incr ::i
}
ttk::button .frm.wipe -text "Wipe" -command {wipeFrm}
ttk::button .frm.close -text "Close" -command {destroy .frm}
grid .frm.wipe .frm.close
}
proc wipeFrm {} {
# Wipe all entry widgets
while {$::i >= 0} {
destroy .frm.enFirst$::i
destroy .frm.enSecond$::i
incr ::i -1
}
}
При запуске потребление памяти ~8 Mb, после создания .frm ~14 Mb.
И занятая память не освобождается ни после последовательного уничтожения виджетов, ни после простого уничтожения формы .frm.
Отчего так?