Утечки памяти при тестировании на исторических данных

Утечки памяти при тестировании на исторических данных
Atom
4/2/2012
zorran


Обнаружил утечки памяти при тестировании на исторических данных, при многократном повторении. Сначал грешил на свою стратегию, потом попробовал запускать пример SampleHistoryTesting многократно, При достижении 30-40 повторений программа подвисала, не выдавая никаких сообщений.

Далее, для чистоты эксперимента подправил код SampleHistoryTesting:

[code=csharp] private void StartBtn_Click( object sender, RoutedEventArgs e ) {

		for( int i = 1; i < 1000; i++ ) {
			Run();

			if( _trader.State != EmulationStates.Started ) { Thread.Sleep( 10 );  }
			if( _trader.State != EmulationStates.Stopped ) { Thread.Sleep( 10 ); }
		}

		MessageBox.Show( "Закончено" );
	}
	
	
	private void Run()
	{
	
	// Ну а тут сам код стратегии, что был раньше в StartBtn_Click 
	
	...
	
	// изменил только период, для более быстрого тестирования
		var startTime = new DateTime(2009, 6, 1);
		var stopTime = new DateTime(2009, 6, 3);
	
	....
	
	}[/code]

После запуска данный код через некоторое время выдает Out of memory эксепшн. (Пробовал, как с включенным выводом инфы в форму, так и выключеным)

на 100 итерациях уже все нормально проходит.

Памяти достаточно - 4 гб озу

Текст исключения:

System.OutOfMemoryException: Выдано исключение типа "System.OutOfMemoryException".

в System.Linq.Buffer1.ToArray() в System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source) в Ecng.Common.RandomArray1..ctor(T min, T max, Int32 count) в StockSharp.Algo.Testing.MarketDataGenerator1.Init() в StockSharp.Algo.Testing.TrendMarketDepthGenerator.Init() в StockSharp.Algo.Testing.EmulationTrader.Start(DateTime startDate, DateTime stopDate) в SampleHistoryTesting.MainWindow.Run() в C:\Projects\VS\OrigSampleHistoryTesting\MainWindow.xaml.cs:строка 219 в SampleHistoryTesting.MainWindow.StartBtn_Click(Object sender, RoutedEventArgs e) в C:\Projects\VS\OrigSampleHistoryTesting\MainWindow.xaml.cs:строка 63 в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e) в System.Windows.Controls.Primitives.ButtonBase.OnClick() в System.Windows.Controls.Button.OnClick() в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) в System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) в System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) в System.Windows.Input.InputManager.ProcessStagingArea() в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в System.Windows.Interop.HwndSource.InputFilterMessage(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, Int32 numArgs) в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)




Thanks:


1 2 3  >
Mikhail Sukhov

Avatar
Date: 4/2/2012
Reply


[quote=zorran;17910]Обнаружил утечки памяти при тестировании на исторических данных, при многократном повторении. [/quote]

Спасибо посмотрим. Это какая версия S#? В 4.1 у нас новый тестер. Лучше его использовать. Называется LowMemEmulationTrader

Thanks:

zorran

Avatar
Date: 4/2/2012
Reply


Проверял на 4.0.19 и 4.0.23

Thanks:

art.tsgnet

Avatar
Date: 4/17/2012
Reply


А где взять версию 4.1 ? в box.com пока вижу последнюю версию 4.0.23

Thanks:

Alexander

Avatar
Date: 4/17/2012
Reply


[quote=art.tsgnet;18303]А где взять версию 4.1 ? в box.com пока вижу последнюю версию 4.0.23[/quote]

[url=http://stocksharp.codeplex.com/SourceControl/BrowseLatest]Codeplex, папка dev[/url]

Thanks:

gaifredo

Avatar
Date: 4/17/2012
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 4/17/2012
Reply


[quote=gaifredo;18319]Скачал новую версию, и запустил в ней SampleHistoryTesting. В ответ тишина, т.е. кривая эквилити не обновляется. Сообщение о том, что расчет закончен не отображается. На предыдущих версиях данный пример работал[/quote]

4.1? Архив с данными тоже был скачал новый?

Thanks:

gaifredo

Avatar
Date: 4/18/2012
Reply


архив данных от 4.0 при попытке запустить гидру, получаю ошибку, о которой отписался в соответствующем разделе

Thanks:

Alexander

Avatar
Date: 4/18/2012
Reply


[quote=gaifredo;18365]архив данных от 4.0[/quote]

данные менялись, используйте новые

Thanks:

art.tsgnet

Avatar
Date: 5/22/2012
Reply


[quote=Mikhail Sukhov;17921][quote=zorran;17910]Обнаружил утечки памяти при тестировании на исторических данных, при многократном повторении. [/quote]

Спасибо посмотрим. Это какая версия S#? В 4.1 у нас новый тестер. Лучше его использовать. Называется LowMemEmulationTrader[/quote] в 4.1 не нашел такого

Thanks:

Alexander

Avatar
Date: 5/22/2012
Reply


[quote=art.tsgnet;19233][quote=Mikhail Sukhov;17921][quote=zorran;17910]Обнаружил утечки памяти при тестировании на исторических данных, при многократном повторении. [/quote]

Спасибо посмотрим. Это какая версия S#? В 4.1 у нас новый тестер. Лучше его использовать. Называется LowMemEmulationTrader[/quote] в 4.1 не нашел такого[/quote]

Уже переименован в EmulationTrader

Thanks:
1 2 3  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy