← Zurück

System.OutOfMemoryException

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (9)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

poison
poison

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

devruss
devruss Autor

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

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

devruss
devruss Autor

Ну вот классический пример: 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)

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

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

devruss
devruss
devruss Autor

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

Супер, как это сделать?=))

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

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

devruss
devruss
devruss Autor

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
Mikhail Sukhov

devruss:

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

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

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

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

devruss
devruss Autor

Михаил Сухов:

devruss:

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

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

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

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

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

Скомпилируй под 64 бита. Спасибо, помогло!