Нехватка памяти (Out of memory)

Автор: Nektodron

Нехватка памяти (Out of memory) - Thu Mar 17 2011 11:35 AM

При оптимизации и торговле может возникать такая ошибка, особенно если оптимизировать длинные (сотни тысяч баров) истории.
Причем такая ошибка возникает даже на компьютерах с большим количеством оперативной памяти. Это связано с тем, что в 32бит версии максимальный объем памяти доступный процессу - 2гб. В реальности этот объем еще меньше, из-за явления называемого фрагментация памяти. Обычно ошибка начинает появлятся после выделения 1.1-1.2гб.
Чтобы задействовать больше памяти и оптимизировать на больших историях нужно переходить на 64бит версию программы. В ней нет никаких ограничений по памяти и эта ошибка не появляется.
Однако в 64бит версии нельзя подключиться к серверам брокеров, т.к. они предоставляют свои API, работающие только в 32бит. Исключение, на текущий момент, составляют брокеры Алор и РикомТраст. Коннекторы к этим брокерам работают в 64бит версии без ограничений. Коннекторы Финам, Смартком и Нетинвестор позволяют только пользоваться накопленным кешем данных без подключения к серверу.
Возникновение такой ошибки в windows во время торговли, может привести к неизвестным заявкам, сделкам, порче базы данных сделок/заявок. Настоятельно рекомендуется для скриптов, которые настроены на торговлю ограничивать МаксБаров. В программе открывать небольшое количество окон, использовать 64битную версию программы.
Автор: Nektodron

Re: Нехватка памяти (Out of memory) - Thu Mar 17 2011 11:42 AM

Небольшое уточнение про 64бит версию. Для работы 64бит версии необходима ОС 64бит. При запуске 64бит версии в 32бит ОС она будет работать как обычно, т.е. как 32бит версия.
Автор: geef

Re: Нехватка памяти (Out of memory) - Sun Mar 27 2011 06:42 PM

Приветствую.
Имею такую проблему сейчас. Есть сервер с 12 гб оперативной памяти, работающий под управлением ОС widows Server 2003 R2 64 бит. Запускаю оптимизацию, через некоторое время вылетает, вот кусок лога:
Click to reveal..

18:36:54.93[1]ERROR:Main():
System.OutOfMemoryException: Выдано исключение типа "System.OutOfMemoryException".
в System.Windows.Controls.TextBlock.GetLineProperties()
в System.Windows.Controls.TextBlock.GetLineProperties(Boolean firstLine, Boolean showParagraphEllipsis, LineProperties lineProperties)
в System.Windows.Controls.TextBlock.MeasureOverride(Size constraint)
в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
в System.Windows.UIElement.Measure(Size availableSize)
в System.Windows.ContextLayoutManager.UpdateLayout()
в System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
в System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
в System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
в System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
в System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
18:36:55.57[26]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.OrderedEnumerable`1.GetEnumerator()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:55.57[26]INFO :120:Error:Script::System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.OrderedEnumerable`1.GetEnumerator()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:55.57[26]INFO :System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.OrderedEnumerable`1.GetEnumerator()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:55.90[23]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.OrderByDescending[TSource,TKey](IEnumerable`1 source, Func`2 keySelector)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:55.90[23]INFO :120:Error:Script::System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.OrderByDescending[TSource,TKey](IEnumerable`1 source, Func`2 keySelector)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:55.90[23]INFO :System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.OrderByDescending[TSource,TKey](IEnumerable`1 source, Func`2 keySelector)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:56.53[30]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at TSLab.ScriptEngine.PositionsList.MakePosition(String signalName, Boolean isLong, Int32 bar, Double price, Double shares, OrderType orderType, Boolean fixPrice)
at TSLab.ScriptEngine.PositionsList.BuyAtMarket(Int32 barNum, Double shares, String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:56.53[30]INFO :120:Error:Script::System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at TSLab.ScriptEngine.PositionsList.MakePosition(String signalName, Boolean isLong, Int32 bar, Double price, Double shares, OrderType orderType, Boolean fixPrice)
at TSLab.ScriptEngine.PositionsList.BuyAtMarket(Int32 barNum, Double shares, String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:56.53[30]INFO :System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at TSLab.ScriptEngine.PositionsList.MakePosition(String signalName, Boolean isLong, Int32 bar, Double price, Double shares, OrderType orderType, Boolean fixPrice)
at TSLab.ScriptEngine.PositionsList.BuyAtMarket(Int32 barNum, Double shares, String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:56.89[30]ERROR:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at TSLab.DataModel.Settings.GrouppedSettings.Get[T]()
at TSLab.DataModel.AppSettingsManager.Get[T]()
at TSLab.LabView.Script.ScriptDataManager.State.LockCalculation()
at TSLab.LabView.Script.ScriptDataManager.State.Dispose()
at TSLab.ScriptEngine.Optimization.ExecuteOneStep()
18:36:57.56[24]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.Where[TSource](IEnumerable`1 source, Func`2 predicate)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:57.56[5]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Collections.Generic.List`1.set_Capacity(Int32 value)
at System.Collections.Generic.List`1.EnsureCapacity(Int32 min)
at System.Collections.Generic.List`1.Add(T item)
at TSLab.ScriptEngine.PositionsList.Add(Position item)
at TSLab.ScriptEngine.PositionsList.BuyAtMarket(Int32 barNum, Double shares, String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:57.56[24]INFO :120:Error:Script::System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.Where[TSource](IEnumerable`1 source, Func`2 predicate)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:57.56[24]INFO :System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.Where[TSource](IEnumerable`1 source, Func`2 predicate)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:57.56[5]INFO :120:Error:Script::System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Collections.Generic.List`1.set_Capacity(Int32 value)
at System.Collections.Generic.List`1.EnsureCapacity(Int32 min)
at System.Collections.Generic.List`1.Add(T item)
at TSLab.ScriptEngine.PositionsList.Add(Position item)
at TSLab.ScriptEngine.PositionsList.BuyAtMarket(Int32 barNum, Double shares, String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:57.56[5]INFO :System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Collections.Generic.List`1.set_Capacity(Int32 value)
at System.Collections.Generic.List`1.EnsureCapacity(Int32 min)
at System.Collections.Generic.List`1.Add(T item)
at TSLab.ScriptEngine.PositionsList.Add(Position item)
at TSLab.ScriptEngine.PositionsList.BuyAtMarket(Int32 barNum, Double shares, String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:58.62[17]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.OrderByDescending[TSource,TKey](IEnumerable`1 source, Func`2 keySelector)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:58.62[17]INFO :120:Error:Script::System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.OrderByDescending[TSource,TKey](IEnumerable`1 source, Func`2 keySelector)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:58.62[17]INFO :System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.Enumerable.OrderByDescending[TSource,TKey](IEnumerable`1 source, Func`2 keySelector)
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:36:59.00[1]ERROR:Main():
System.OutOfMemoryException: Выдано исключение типа "System.OutOfMemoryException".
в System.Threading.SynchronizationContext.SetWaitNotificationRequired()
в System.Windows.Threading.DispatcherSynchronizationContext..ctor(Dispatcher dispatcher)
в System.Windows.Threading.DispatcherOperation.InvokeImpl()
в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
в System.Threading.ExecutionContext.runTryCode(Object userData)
в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Windows.Threading.DispatcherOperation.Invoke()
в System.Windows.Threading.Dispatcher.ProcessQueue()
в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
18:36:59.92[22]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at TSLab.ScriptEngine.PositionsList.MakePosition(String signalName, Boolean isLong, Int32 bar, Double price, Double shares, OrderType orderType, Boolean fixPrice)
at TSLab.ScriptEngine.PositionsList.BuyAtMarket(Int32 barNum, Double shares, String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:37:14.00[5]DEBUG:<log4net.Error>Exception rendering object type [System.OutOfMemoryException]<stackTrace></stackTrace></log4net.Error>
18:37:14.96[31]ERROR:Main():
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Threading.ExecutionContext.CreateCopy()
at System.Threading._TimerCallback.PerformTimerCallback(Object state)
18:37:14.96[25]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at TSLab.ScriptEngine.PositionsList.MakePosition(String signalName, Boolean isLong, Int32 bar, Double price, Double shares, OrderType orderType, Boolean fixPrice)
at TSLab.ScriptEngine.PositionsList.BuyAtMarket(Int32 barNum, Double shares, String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:37:16.59[14]ERROR:Main():
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Threading.ExecutionContext.CreateCopy()
at System.Threading._TimerCallback.PerformTimerCallback(Object state)
18:37:17.59[17]DEBUG:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at TSLab.ScriptEngine.PositionsList.<.ctor>b__6(String signalName)
at TSLab.ScriptEngine.PositionsList.ByNameCache.Get(String signalName)
at TSLab.ScriptEngine.PositionsList.GetLastActiveForSignal(String signalName)
at TSLab.User.Script.Execute(IContext context, ISecurity Source1)
18:37:19.50[1]ERROR:Main():
<log4net.Error>Exception rendering object type [System.OutOfMemoryException]<stackTrace></stackTrace></log4net.Error>
18:37:19.53[26]ERROR:System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
at TSLab.ScriptEngine.OptimizationResult..ctor(IRuntime2 runtime, IEnumerable`1 props)
at TSLab.ScriptEngine.Optimization.ExecuteOneStep()
18:37:23.65[28]ERROR:Main():
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Threading.ExecutionContext.CreateCopy()
at System.Threading._TimerCallback.PerformTimerCallback(Object state)
18:37:24.00[24]DEBUG:18:37:28.40[12]ERROR:Main():
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Threading.ExecutionContext.CreateCopy()
at System.Threading._TimerCallback.PerformTimerCallback(Object state)

На этом процесс вылетел. Во время работы вел мониторинг производительности системы, из 12гб доступной оперативной памяти использовалось 1.5гб.
Подскажите пожалуйста как бороться с проблемой.
Заранее благодарю.
Автор: Nektodron

Re: Нехватка памяти (Out of memory) - Mon Mar 28 2011 12:23 PM

То что у вас 64бит версия ОС, не означает, что программа автоматом запускается в 64бит режиме. Нужно принудительно запускать 64бит версию.
Автор: Avgust2047

Re: Нехватка памяти (Out of memory) - Wed Jan 25 2012 12:23 PM

У меня 64бит ОС, Брокер Алор, где взять 64бит программу?
если можно ссылку.. на сайте не нашел..только недавно скачивал обновление 1.1.23.0 (32бит)
Спасибо!
Автор: ZSE

Re: Нехватка памяти (Out of memory) - Wed Jan 25 2012 12:28 PM

Если система 64 - она у Вас уже стоит.
Посмотрите в программах в папке TSLab ярлык TSLab64
Автор: Avgust2047

Re: Нехватка памяти (Out of memory) - Wed Jan 25 2012 12:32 PM

Спасибо..нашел))
Автор: Avgust2047

Re: Нехватка памяти (Out of memory) - Wed Jan 25 2012 12:35 PM

Мне тут сказали что кеш лучше уменьшить..это зачем/почему?
(информация для понимания и внутреннего роста)

http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=36437#Post36437
Автор: ViL

Re: Нехватка памяти (Out of memory) - Wed Jan 25 2012 03:03 PM

Originally Posted By: Avgust2047
Мне тут сказали что кеш лучше уменьшить..это зачем/почему?
(информация для понимания и внутреннего роста)

http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=36437#Post36437

Если использовать 64бит, то уменьшать не обязательно.
Если 32бит - уменьшать нужно из-за сборщика мусора. И из-за того, что в 32бит ОС windows ограничивает оперативную память до 2гб для языков NET(в реальности из-за фрагментации этот объем состовляет 1гб для одного процесса).
Автор: Avgust2047

Re: Нехватка памяти (Out of memory) - Fri Jan 27 2012 05:16 AM

Спасибо!!!

Подскажите что значит сие ругательство..я так понимаю что в логике скрипта что-то? но что именно???

05:03:46.48 System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
в System.ThrowHelper.ThrowArgumentOutOfRangeException()
в System.SZArrayHelper.get_Item[T](Int32 index)
в TSLab.User.Script.Execute(IContext context, ISecurity var0)
Автор: ViL

Re: Нехватка памяти (Out of memory) - Fri Jan 27 2012 06:32 AM

В логических формулах или/и формулах используется обращение к индексу. Например close[i-15] У блоков формула и Логическая формула есть параметр, "начинать с" он должен быть >= максимальному значению индекса. В данном примере "Начинать с" д.б. = 15
Автор: alexander

Re: Нехватка памяти (Out of memory) - Sun Jun 17 2012 11:51 AM

при запуске написанного скрипта выскакивает такое сообщение. в чем ошибка если можно?
:44:46.63 120 Не могу запустить скрипт.
11:44:46.63 120 c:\Users\Александр\AppData\Local\TSLab\TSLab\temp\code24.cs(336,39) : error CS1002: ожидалась ;
11:44:46.63 120 c:\Users\Александр\AppData\Local\TSLab\TSLab\temp\code24.cs(285,39) : error CS1002: ожидалась ;
11:44:46.36 120 Не могу собрать скрипт.
Автор: ViL

Re: Нехватка памяти (Out of memory) - Sun Jun 17 2012 03:03 PM

Originally Posted By: alexander
при запуске написанного скрипта выскакивает такое сообщение. в чем ошибка если можно?
:44:46.63 120 Не могу запустить скрипт.
11:44:46.63 120 c:\Users\Александр\AppData\Local\TSLab\TSLab\temp\code24.cs(336,39) : error CS1002: ожидалась ;
11:44:46.63 120 c:\Users\Александр\AppData\Local\TSLab\TSLab\temp\code24.cs(285,39) : error CS1002: ожидалась ;
11:44:46.36 120 Не могу собрать скрипт.

Причем здесь "Out of memory" ? В Вашем случае просто какая-то синтаксическая ошибка, нужно искать в скрипте.
Автор: burger

Re: Нехватка памяти (Out of memory) - Tue Feb 19 2013 04:46 PM

А можно более точную рекомендацию по решению?
Ситуация: 2 компа на одном 2 гига, на другом 500 мегов
оперативки.
Первый так и сыпет мессагами "OutOfMemory"
Второй тормозит, но зато всё считает...
Может настройки системы поковырять какие?
Автор: ViL

Re: Нехватка памяти (Out of memory) - Tue Feb 19 2013 04:53 PM

В программе - Файл - Настройки программы - Оптимизация скриптов - кеш для скриптов.
Если поставить 0, то будет считать долго, но без ошибок, если один прогон истории не занимает отведенной памяти.
Если поставить 1000 мб, то ошибки windows могут возникать, если процессор не успевает обработать историю.
Автор: ra81

Re: Нехватка памяти (Out of memory) - Wed Feb 20 2013 05:42 AM

Если вы работаете со свечами меньше минуты, 2 гига это мало. Наращивайте. 500 это вообще кошкины слезы, на этом только систему запустить можно и то тормозить будет.
Автор: 777

Re: Нехватка памяти (Out of memory) - Thu Feb 21 2013 10:26 PM

Originally Posted By: ra81
Если вы работаете со свечами меньше минуты, 2 гига это мало. Наращивайте. 500 это вообще кошкины слезы, на этом только систему запустить можно и то тормозить будет.

Про 500 метров не согласен. У меня комп есть у него 500 метров, тслаб работает очень стабильно. Оптимизация долгая, но работает очень стабильно. Главное здесь не показатели системы, а подход. Например в данном случае можно взять историю, один прогон которой в оптимизаторе не заполнит 250мб. Кеш - 0 естественно.
Автор: ra81

Re: Нехватка памяти (Out of memory) - Wed Feb 27 2013 08:56 PM

Originally Posted By: 777
Originally Posted By: ra81
Если вы работаете со свечами меньше минуты, 2 гига это мало. Наращивайте. 500 это вообще кошкины слезы, на этом только систему запустить можно и то тормозить будет.

Про 500 метров не согласен. У меня комп есть у него 500 метров, тслаб работает очень стабильно. Оптимизация долгая, но работает очень стабильно. Главное здесь не показатели системы, а подход. Например в данном случае можно взять историю, один прогон которой в оптимизаторе не заполнит 250мб. Кеш - 0 естественно.

Ну я видел как люди на 128 работали в ХР, но это не работа а извращение. Завести ТСЛаб и бота на нем с 500 еще можно, но что-то делать??? Это тока нервы себе портить.

Когда я был школьником память стоила очень дорого, приходилось ужиматься. Сейчас память стоит гроши. Купить пару гигов лишних может каждый. Не поставите память, купите новый винт в итоге, все равно винда туда кэшироваться будет и задолбит его.
Автор: 777

Re: Нехватка памяти (Out of memory) - Thu Feb 28 2013 12:36 AM

Originally Posted By: ra81
Originally Posted By: 777
Originally Posted By: ra81
Если вы работаете со свечами меньше минуты, 2 гига это мало. Наращивайте. 500 это вообще кошкины слезы, на этом только систему запустить можно и то тормозить будет.

Про 500 метров не согласен. У меня комп есть у него 500 метров, тслаб работает очень стабильно. Оптимизация долгая, но работает очень стабильно. Главное здесь не показатели системы, а подход. Например в данном случае можно взять историю, один прогон которой в оптимизаторе не заполнит 250мб. Кеш - 0 естественно.

Ну я видел как люди на 128 работали в ХР, но это не работа а извращение. Завести ТСЛаб и бота на нем с 500 еще можно, но что-то делать??? Это тока нервы себе портить.

Когда я был школьником память стоила очень дорого, приходилось ужиматься. Сейчас память стоит гроши. Купить пару гигов лишних может каждый. Не поставите память, купите новый винт в итоге, все равно винда туда кэшироваться будет и задолбит его.

Когда я был школьником, домашние компы были в сказках. Комп этот пережил два новейших ноутбука и один сервер. Так-что, нет. При правильном подходе к хорошей технике, она не только считает, но и живет долго. smile
Автор: jhgjrht

Re: Нехватка памяти (Out of memory) - Thu Feb 28 2013 01:04 AM

Но с доступной памятью ТСЛаб всеже как-то уж очень неоптимально работает, особенно это заметно на таймфреймах которые по тикам строятся. Увы, боюсь, это издержки архитектуры программы. Вот, после нескольких суток работы:

В Квике открыты десятки графиков, таблица всех сделок и таблица истории. В Нинзе (который тоже под .net написан) тоже дофига сколько всего открыто. Все стабильно работает. А в ТСЛабе всего несколько скриптов и 3 графика.
Автор: ra81

Re: Нехватка памяти (Out of memory) - Thu Feb 28 2013 03:00 PM

Originally Posted By: jhgjrht
Но с доступной памятью ТСЛаб всеже как-то уж очень неоптимально работает, особенно это заметно на таймфреймах которые по тикам строятся. Увы, боюсь, это издержки архитектуры программы. Вот, после нескольких суток работы:

В Квике открыты десятки графиков, таблица всех сделок и таблица истории. В Нинзе (который тоже под .net написан) тоже дофига сколько всего открыто. Все стабильно работает. А в ТСЛабе всего несколько скриптов и 3 графика.

Как я уточнил, проблем в .Net. При определенных условиях фрагментация памяти пожирает доступное пространство. У меня доходило до 3-4 гб.
Автор: jhgjrht

Re: Нехватка памяти (Out of memory) - Thu Feb 28 2013 07:28 PM

Согласен, что проблема с фрагментацией памяти имеется, но ведь я не просто так Нинзю в пример привел. Также как и ТСЛаб это приложение написано для .net и тоже использует в работе большие
объемы данных, но при этом весьма умеренно в расходах памяти. Очевидно, разница в подходе к работе с массивами данных, в архитектуре приложения.
Автор: 777

Re: Нехватка памяти (Out of memory) - Fri Mar 01 2013 12:12 AM


Ниндзя хороший пример для подражания.
Но есть большое НО. Если нужны только графики, в ТСЛаб есть графики, открывайте их сколько угодно и будет летать, как ниндзя )). А вот точно такой же скрипт, как один из графиков, уже даст нагрузку. Так как запускается пересчет.
Автор: ra81

Re: Нехватка памяти (Out of memory) - Fri Mar 01 2013 09:25 AM

Originally Posted By: 777

Ниндзя хороший пример для подражания.
Но есть большое НО. Если нужны только графики, в ТСЛаб есть графики, открывайте их сколько угодно и будет летать, как ниндзя )). А вот точно такой же скрипт, как один из графиков, уже даст нагрузку. Так как запускается пересчет.

Неправда. Графики как раз отлично создают фрагментацию. У меня на 3 графика собственно и поедало 3-4 Гб.
Автор: 777

Re: Нехватка памяти (Out of memory) - Fri Mar 01 2013 09:50 AM

Originally Posted By: ra81

Неправда... поедало..

?

Попробуйте еще раз. smile
Автор: Nektodron

Re: Нехватка памяти (Out of memory) - Fri Mar 01 2013 10:42 AM

Фрагментацию дают графики с количеством свечей больше 20тысяч и линии на графике от 10 тысяч свечей и не имеющие ограничений по количеству (т.е. имеющие постоянный рост, с появление новым данных). В этом случае создаваемые массивы не очищаются сборщиком мусора, и в случае когда размер массива постоянно растет в памяти образуются неиспользуемые "дыры". Бороться с этим можно только округляя размер массив с запасом. TSLab, по возможности, это и делает. Чем длиннее выведенный график, тем быстрее будет фрагментироваться память. Кроме того, TSLab не выгружает из памяти, уже загруженные данные, стараясь их кешировать (кроме тиков за прошлые дни).
В общем, можно много спорить, касательно оптимизации памяти, но это всегда потеря скорости расчетов. При современном развитии электронной промышленности стараться съэкономить каждый байт, просто не имеет смысла. Эти усилия того не стоят, скорость расчета важнее.
В общем, если соблюдать определенные рекомендации, а именно, не использовать длинные графики без ограничения количества свечей с обновлением, память будет утекать не так быстро. Если не использовать графики больше 10тыщ свечей, программа нормально работает в 512мб памяти, проверялось не один раз. Опять же, если используете Transaq, то память кушает их библиотека. В первых версиях это было до 500мб в день (отсда в программе появился ежедневный рестарт, т.к. мы ничег оне могли с этим поделать). Сейчас это 100-150мб в день.
Автор: ra81

Re: Нехватка памяти (Out of memory) - Fri Mar 01 2013 04:38 PM

Originally Posted By: 777
Originally Posted By: ra81

Неправда... поедало..

?

Попробуйте еще раз. smile

Подтверждение выше smile.