System.OutOfMemoryException
Atom Ответить
11.07.2014


Проблема следующая, на бэктесте тиковых данных месяца на 3 (т.е. полностью один фьючерсный контракт от экспирации до экспирации) очень часто вылетает ошибка System.OutOfMemoryException
Вылетает на разных timestamps, стэктрейс приводит в обработку индикаторов (тоже разных). Если сразу перезапустить бэктест, то ошибка пропадает и бэктест завершается удачно. Бывает надо раза по 2 перезапускать.

Вопрос: что может быть причиной данной ошибки и как ее вылавливать?
(я не программер, так что может вопрос простой и известный - тогда киньте ссылку на решение пожалуйста)

Теги:


Спасибо:




9 Ответов
poison

Фотография
Дата: 11.07.2014
Ответить


Память оперативная кончилась?
Спасибо:

devruss

Фотография
Курсы
Дата: 11.07.2014
Ответить


poison Перейти
Память оперативная кончилась?


Неа, проверял уже: 16 Гб оперативки, всегда 3-4 Гб свободно. Эффект от загруженности не зависит.
Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 11.07.2014
Ответить


Ну вот классический пример:
http://gyazo.com/7be7b72f6a67e0874342ca24e42122ee

Код

   at StockSharp.Algo.Indicators.SingleIndicatorValue`1.GetValue[T]()
   at StockSharp.Algo.Indicators.Trend.SimpleMovingAverage.OnProcess(IIndicatorValue input)
   at StockSharp.Algo.Indicators.BaseIndicator`1.Process(IIndicatorValue input)   
   at System.Action`1.Invoke(T obj)
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Algo.Candles.CandleSeries.#=qfR$LDCvMTYoTTH67n1X664miBKQST6wqusmzmzYrlOk=(CandleSeries #=qFAXdhaFsC8DnUmGNIk6IwQ==, Candle #=q8QgvZ_AB8w8N$XxPV8$kYA==)
   at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 handler, T1 arg1, T2 arg2)
   at StockSharp.Algo.Candles.CandleManager.#=qgTs24klIPBFPQxo35ULaR916l6_z8TQcAnrkAw3sOmQ=.#=qcx4pHVK__g0zIaYY349qJg==(Candle #=qs41$tHtdOd5CoFPaVoonVQ==)
   at #=qKH3LDQrqwmDAD$ADaFnGFjjzy14XZDUvczIb1T8JCJB6nFyWELQGJb449aNjN8R2uyuzzPmyMqQb3ZWJHMHFTw==.#=qgfsbu9Zc3b1LAFHgAGQqIw==(CandleSeries #=q0ynP8uDK8OYctUUd_SUe2w==, #=qzZyZNGCQcmxeIONO8_wXww== #=q3tKQ5Tzq3y5ORZ5Ecsij3Q==)
   at System.Action`2.Invoke(T1 arg1, T2 arg2)
   at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 handler, T1 arg1, T2 arg2)
   at StockSharp.Algo.Candles.Compression.CandleBuilder`1.RaiseProcessing(CandleSeries series, Candle candle)
Автор топика
Спасибо:

Валентин Лебедев

Фотография
Программист
Дата: 11.07.2014
Ответить


Скомпилируй под 64 бита.
Спасибо: devruss

devruss

Фотография
Курсы
Дата: 12.07.2014
Ответить


viosee Перейти
Скомпилируй под 64 бита.


Супер, как это сделать?=))
Автор топика
Спасибо:

Валентин Лебедев

Фотография
Программист
Дата: 12.07.2014
Ответить


В свойствах проекта раздел Build и там Platform Target - x64.
Спасибо: devruss

devruss

Фотография
Курсы
Дата: 12.07.2014
Ответить


viosee Перейти
В свойствах проекта раздел Build и там Platform Target - x64.


Ок, сейчас попробую...

Пока что, уже 5 раз подряд вылетает этот exception:
Код

   at System.Windows.Data.Binding.set_Source(Object value)
   at Xceed.Wpf.Toolkit.PropertyGrid.ObjectContainerHelperBase.SetupDefinitionBinding[T](PropertyItem propertyItem, DependencyProperty itemProperty, DescriptorPropertyDefinitionBase pd, Expression`1 definitionProperty, BindingMode bindingMode)
   at Xceed.Wpf.Toolkit.PropertyGrid.ObjectContainerHelperBase.InitializePropertyItem(PropertyItem propertyItem)
   at Xceed.Wpf.Toolkit.PropertyGrid.ObjectContainerHelperBase.RegenerateProperties()
   at Xceed.Wpf.Toolkit.PropertyGrid.ObjectContainerHelperBase.GenerateProperties()
   at Xceed.Wpf.Toolkit.PropertyGrid.PropertyGrid.UpdateContainerHelper()
   at Xceed.Wpf.Toolkit.PropertyGrid.PropertyGrid.OnSelectedObjectChanged(Object oldValue, Object newValue)
   at StockSharp.Xaml.PropertyGrid.PropertyGridEx.OnSelectedObjectChanged(Object oldValue, Object newValue)
   at Xceed.Wpf.Toolkit.PropertyGrid.PropertyGrid.OnSelectedObjectChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at Xceed.Wpf.Toolkit.PropertyGrid.PropertyGrid.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
   at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.Activate(Object item)
   at System.Windows.Data.BindingExpression.AttachToContext(AttachAttempt attempt)
   at System.Windows.Data.BindingExpression.MS.Internal.Data.IDataBindEngineClient.AttachToContext(Boolean lastChance)
   at MS.Internal.Data.DataBindEngine.Task.Run(Boolean lastChance)
   at MS.Internal.Data.DataBindEngine.Run(Object arg)
   at MS.Internal.Data.DataBindEngine.OnLayoutUpdated(Object sender, EventArgs e)
   at System.Windows.ContextLayoutManager.fireLayoutUpdateEvent()
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.AnimatedRenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run(Window window)
   at System.Windows.Application.Run()
   at ...\obj\Debug\App.g.cs:line 0
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()


Памяти дофига, трейдинговые системы не запущены - все ресурсы компа только для бэктестинга....
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 12.07.2014
Ответить


devruss Перейти
viosee Перейти
В свойствах проекта раздел Build и там Platform Target - x64.


Ок, сейчас попробую...

Пока что, уже 5 раз подряд вылетает этот exception:


Лог обрезан. Не вижно само сообщение, что именно за ошибка.
Спасибо:

devruss

Фотография
Курсы
Дата: 12.07.2014
Ответить


Михаил Сухов Перейти
devruss Перейти
viosee Перейти
В свойствах проекта раздел Build и там Platform Target - x64.


Ок, сейчас попробую...

Пока что, уже 5 раз подряд вылетает этот exception:


Лог обрезан. Не вижно само сообщение, что именно за ошибка.


Вроде копировал полный лог....

Цитата:
Скомпилируй под 64 бита.

Спасибо, помогло!
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy