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

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


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

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

		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);
		
		....
		
		}

После запуска данный код через некоторое время выдает 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


zorran: Обнаружил утечки памяти при тестировании на исторических данных, при многократном повторении.

Спасибо посмотрим. Это какая версия 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


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

Codeplex, папка dev

Thanks:

gaifredo

Avatar
Date: 4/17/2012
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 4/17/2012
Reply


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

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

Thanks:

gaifredo

Avatar
Date: 4/18/2012
Reply


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

Thanks:

Alexander

Avatar
Date: 4/18/2012
Reply


gaifredo: архив данных от 4.0

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

Thanks:

art.tsgnet

Avatar
Date: 5/22/2012
Reply


Mikhail Sukhov:

zorran: Обнаружил утечки памяти при тестировании на исторических данных, при многократном повторении.

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

Thanks:

Alexander

Avatar
Date: 5/22/2012
Reply


art.tsgnet:

Mikhail Sukhov:

zorran: Обнаружил утечки памяти при тестировании на исторических данных, при многократном повторении.

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

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

Thanks:
1 2 3  >

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

loading
clippy