Утечка памяти при использовании SetUpdateCallback

Страницы: 1
RSS
Утечка памяти при использовании SetUpdateCallback
 
Код
local class, sec_code = "SPBFUT", "SiU1"

local run = true
function OnStop()
  run = nil
end

function main()
  local ds = assert(CreateDataSource(class, sec_code, 1))
  ds:SetUpdateCallback(function (index)
    if index < ds:Size() then return end
    for i = 1, index do
      ds:T(i)
      ds:O(i)
      ds:H(i)
      ds:L(i)
      ds:C(i)
      ds:V(i)
    end
  end)
  while run do sleep(1000) end
end

За несколько минут объём занимаемой скриптом памяти вырастает с 300 Кб до Гигабайтов.

Если график раннее не заказывался и убрать строку
Код
if index < ds:Size() then return end
, то сразу при запуске будет 2Гб.
Надо делать так, как надо. А как не надо - делать не надо.
 
QUIK 9.1.3.11

Скрытый текст
Надо делать так, как надо. А как не надо - делать не надо.
 
Здравствуйте Старатель,
Ваше обращение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
 
Добрый день.

Действительно, в ПО QLUA есть ошибка работы SetUpdateCallback, приводящая к чрезмерному потреблению памяти. Мы исправим ошибку в очередном обновлении ПО. Приносим извинения за причинённые неудобства.
 
Добрый день,

Описанная в данном инциденте проблема была исправлена в версии терминала 9.3.3.
Рекомендуем вам обновить версию ПО.
Приносим извинения за причиненные неудобства.

Цитата
Старатель написал:
Код
   local  class, sec_code  =   "SPBFUT" ,  "SiU1" 

 local  run  =   true 
 function   OnStop ()
  run  =   nil 
 end 

 function   main ()
   local  ds  =  assert( CreateDataSource (class, sec_code,  1 ))
  ds: SetUpdateCallback ( function  (index)
     if  index  <  ds: Size ()  then   return   end 
     for  i  =   1 , index  do 
      ds:T(i)
      ds:O(i)
      ds:H(i)
      ds:L(i)
      ds:C(i)
      ds:V(i)
     end 
   end )
   while  run  do   sleep ( 1000 )  end 
 end   

За несколько минут объём занимаемой скриптом памяти вырастает с 300 Кб до Гигабайтов.

Если график раннее не заказывался и убрать строку
Код
   if  index  <  ds: Size ()  then   return   end   
, то сразу при запуске будет 2Гб.
Страницы: 1
Читают тему
Наверх