Многократные вызовы SearchItems для поиска нужного инструмента в таблице лимитов по бумагам приводят к утечкам памяти, которые не может устранить сборщик мусора Lua.
Следующий метод возвращает баланс по заданному инструменту и коду клиента:
Вызывается этот метод часто (несколько раз в секунду) и приводит к серьезным утечкам памяти (объем используемой памяти проверяю через функцию collectgarbage("count")). За день работы набирается больше 2 Гб.
Если я буду искать нужный инструмент просто прямым перебором всех строк в таблице, то все нормально.
Могут ли разработчики взглянуть на данную проблему? Версия QUIK 7.5.0.72, Lua версии 5.1.
Следующий метод возвращает баланс по заданному инструменту и коду клиента:
Код |
---|
function TradeItem:get_balance() local res = 0 if self.bal_func == nil then self.bal_func = function(t) return t.limit_kind == 2 and t.client_code == self.clientcode and t.sec_code == self.seccode end end local sec_table = SearchItems("depo_limits", 0, getNumberOf("depo_limits") - 1, self.bal_func) if sec_table and #sec_table > 0 then local table_item = getItem("depo_limits", sec_table[1]) if table_item then res = table_item.currentbal end end return res end |
Если я буду искать нужный инструмент просто прямым перебором всех строк в таблице, то все нормально.
Могут ли разработчики взглянуть на данную проблему? Версия QUIK 7.5.0.72, Lua версии 5.1.