2 / 2 / 2
Регистрация: 13.03.2013
Сообщений: 107
|
|
1 | |
Выдано исключение типа "System.OutOfMemoryException"09.09.2015, 17:14. Показов 28304. Ответов 5
Метки нет Все метки)
(
Доброго времени суток. Есть приложение, периодически (довольно редко) ловлю Unhandled Exception типа SystemOutOfMemory. При чем имеется 2 принципиально разных стектрейся:
Код
--- 1 --- System.OutOfMemoryException: Выдано исключение типа "System.OutOfMemoryException". Server stack trace: в System.Runtime.CompilerServices.AsyncMethodBuilderCore.GetCompletionAction[TMethodBuilder,TStateMachine](TMethodBuilder& builder, TStateMachine& stateMachine) в System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitUnsafeOnCompleted[TAwaiter,TStateMachine](TAwaiter& awaiter, TStateMachine& stateMachine) Exception rethrown at [0]: в System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__1(Object state) в System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() в System.Threading.ThreadPoolWorkQueue.Dispatch() в System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() Server stack trace: в System.Runtime.CompilerServices.AsyncMethodBuilderCore.GetCompletionAction[TMethodBuilder,TStateMachine](TMethodBuilder& builder, TStateMachine& stateMachine) в System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitUnsafeOnCompleted[TAwaiter,TStateMachine](TAwaiter& awaiter, TStateMachine& stateMachine) Exception rethrown at [0]: в System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__1(Object state) в System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() Код
--- 2 ---- System.OutOfMemoryException: Выдано исключение типа "System.OutOfMemoryException". в System.String.CtorCharArrayStartLength(Char[] value, Int32 startIndex, Int32 length) в SuperSocket.ClientEngine.Protocol.ArraySegmentList.Decode(Encoding encoding, Int32 offset, Int32 length) в WebSocket4Net.WebSocketCommandInfo..ctor(IList`1 frames) в WebSocket4Net.Protocol.DraftHybi10DataReader.GetCommandInfo(Byte[] readBuffer, Int32 offset, Int32 length, Int32& left) в WebSocket4Net.WebSocket.OnDataReceived(Byte[] data, Int32 offset, Int32 length) в WebSocket4Net.WebSocket.client_DataReceived(Object sender, DataEventArgs e) в SuperSocket.ClientEngine.ClientSession.OnDataReceived(Byte[] data, Int32 offset, Int32 length) в SuperSocket.ClientEngine.AsyncTcpSession.ProcessReceive(SocketAsyncEventArgs e) в SuperSocket.ClientEngine.AsyncTcpSession.SocketEventArgsCompleted(Object sender, SocketAsyncEventArgs e) в System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) в System.Net.Sockets.SocketAsyncEventArgs.ExecutionCallback(Object ignored) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) в System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags) в System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) в System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) в System.String.CtorCharArrayStartLength(Char[] value, Int32 startIndex, Int32 length) в SuperSocket.ClientEngine.Protocol.ArraySegmentList.Decode(Encoding encoding, Int32 offset, Int32 length) в WebSocket4Net.WebSocketCommandInfo..ctor(IList`1 frames) в WebSocket4Net.Protocol.DraftHybi10DataReader.GetCommandInfo(Byte[] readBuffer, Int32 offset, Int32 length, Int32& left)
0
|
|
09.09.2015, 17:14 | |
Ответы с готовыми решениями:
5
Необработанное исключение типа "System.Net.Sockets.SocketException" в System.dll Потоки Thread: Необработанное исключение типа "System.NullReferenceException" Необработанное исключение типа "System.ObjectDisposedException" в mscorlib.dll Необработанное исключение типа "System.Reflection.TargetInvocationException" |
1092 / 835 / 490
Регистрация: 09.04.2014
Сообщений: 1,975
|
|
09.09.2015, 17:26 | 2 |
ищи утечки памяти, если что-то другое сожрало всю память, то такое исключение может выскочить где угодно
0
|
2 / 2 / 2
Регистрация: 13.03.2013
Сообщений: 107
|
|
09.09.2015, 17:45 [ТС] | 3 |
Для меня немного не понятно по части утечек памяти в .NET (объясните если можно). Я думал всем заправляет GC он сам понимает когда и что чистить. Исключения воспроизводятся нестабильно, редко. Стектрейс неизменный, т.е. скорее всего есть именно 2 проблемных места. (хотя могу ошибаться)
0
|
9 / 9 / 0
Регистрация: 26.01.2015
Сообщений: 94
|
|
09.09.2015, 21:07 | 4 |
Полагаю у вас для каждого коннекта создается объект, в итоге их становится так много, что памяти не хватает.
Если у вас 15 студия, в дебаг моде посмотрите во вкладке "Диагностика" как забивается память.
0
|
1270 / 971 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
09.09.2015, 21:21 | 5 |
так, для справки - OutOfMemoryException может выпадать не только из-за физической нехватки памяти, но и например из-за невозможности выделить непрерывный участок памяти нужного размера, что часто происходит если гадить в памяти мелким мусором с большой скорости
0
|
2 / 2 / 2
Регистрация: 13.03.2013
Сообщений: 107
|
|
10.09.2015, 00:05 [ТС] | 6 |
Не совсем так, я один раз устанавливаю соединение посредством веб сокета и слушаю сообщения от него. Соединение может устанавливаться повторно только в случае возникновения различного рода проблем. Сообщения довольно частые (в среднем раз в 2 секунды). Под дебагом ошибку ни разу не удалось поймать. Неделю работало приложение - все норм. А у пользователей пару раз в сутки возникает, согласно краш-репортам.
Добавлено через 1 минуту Вот еще что, согласно все тем же репортам, краш происходит неизменно в районе 1.5 гига съеденной памяти.
0
|
10.09.2015, 00:05 | |
Помогаю со студенческими работами здесь
6
Необработанное исключение типа "System.IO.IOException" произошло в mscorlib.dll Исключение типа "System.StackOverfliwException" VS 2010 Ошибка при запуске отладки: "Неперехваченное исключение выдано методом, вызванным через Reflection" Неявное преобразование типа "System.Drawing.Icon" в "System.Drawing.Image" невозможно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |