Memory leaks SignalR和/或ConcurrentDictionary或SignalR.InMemoryMessage可能存在内存泄漏?

Memory leaks SignalR和/或ConcurrentDictionary或SignalR.InMemoryMessage可能存在内存泄漏?,memory-leaks,asp.net-4.0,signalr,Memory Leaks,Asp.net 4.0,Signalr,信号器(

信号器( 使用,我创建了新闻提要进程的内存转储

首先,这里是signar.InMemoryMessage的计数和内存消耗:

133099      6388752 System.Collections.Concurrent.ConcurrentDictionary`2+Node[[System.String, mscorlib],[SignalR.Infrastructure.LockedList`1[[System.Action`1[[System.Collections.Generic.IList`1[[SignalR.InMemoryMessage...
最后,以下是前3个内存消耗对象的值:

000007fef9960bb0    79307    140001536 System.Byte[]
000007fef9956960  1704571    175128912 System.String
000007fef995ae68  1901299    549202440 System.Object[]
正在执行
!dumpheap-mt000007fef995ae68
,我得到了一个相当长的方法表的详细信息。大多数对象的大小都相对较小,这是意料之中的。但是,在转储结束时,我看到以下内容:

00000001eb0f3220 000007fef995ae68      160     
00000001eb0f3580 000007fef995ae68       40     
00000001eb0f35f0 000007fef995ae68       40     
00000001eb0f3758 000007fef995ae68       56     
00000001eb0f37c8 000007fef995ae68       88     
00000001eb0f3820 000007fef995ae68       48     
00000001eb0f3cc8 000007fef995ae68       40     
00000001eb0f4570 000007fef995ae68       40     
00000001eb0f45e0 000007fef995ae68       40     
00000001eb0f4650 000007fef995ae68       40     
00000001eb0f4de8 000007fef995ae68      176     
00000001eb0f4ed0 000007fef995ae68       40     
00000001eb9b3380 000007fef995ae68       40     
00000001eb9b33c0 000007fef995ae68       40     
0000000237580080 000007fef995ae68  1146888 
所以我继续做
!gcroot 0000000 237580080
。一些初始转储如下所示:

0000000237580080 000007fef995ae68  1146888     
total 0 objects
------------------------------
total 0 objects
Statistics:
              MT    Count    TotalSize Class Name
000007fef995ae68  1901299    549202440 System.Object[]
Total 1901299 objects
0:045> !gcroot 0000000237580080 
Note: Roots found on stacks may be false positives. Run "!help gcroot" for
more info.
Scan Thread 11 OSTHread 1040
Scan Thread 24 OSTHread c18
Scan Thread 26 OSTHread 488
Scan Thread 27 OSTHread 1144
Scan Thread 28 OSTHread 14b0
RSP:57ae0f0:Root:  000000012acea438(MyApp.Newsfeed.Hubs.NewsfeedHub)->
  000000012acea5f8(SignalR.GroupManager)->
  0000000185a17328(SignalR.Connection)->
  000000011f655ed0(SignalR.InProcessMessageBus)->
  000000011f656680(System.Collections.Concurrent.ConcurrentDictionary`2[[System.String, mscorlib],[SignalR.Infrastructure.LockedList`1[[System.Action`1[[System.Collections.Generic.IList`1[[SignalR.InMemoryMessage`1[[System.UInt64, mscorlib]], SignalR]], mscorlib]], mscorlib]], SignalR]])->
  0000000237580080(System.Object[])
RSP:57ae100:Root:  000000012acea098(System.Linq.Enumerable+WhereSelectEnumerableIterator`2[[SignalR.Hubs.IDisconnect, SignalR],[System.Threading.Tasks.Task, mscorlib]])->
  000000012acea058(System.Func`2[[SignalR.Hubs.IDisconnect, SignalR],[System.Threading.Tasks.Task, mscorlib]])->
  000000012ace9ea8(SignalR.Hubs.HubDispatcher+<>c__DisplayClass1a`1[[SignalR.Hubs.IDisconnect, SignalR]])->
  0000000185a13640(SignalR.Hubs.HubDispatcher)->
  000000011f655ed0(SignalR.InProcessMessageBus)->
  000000011f656680(System.Collections.Concurrent.ConcurrentDictionary`2[[System.String, mscorlib],[SignalR.Infrastructure.LockedList`1[[System.Action`1[[System.Collections.Generic.IList`1[[SignalR.InMemoryMessage`1[[System.UInt64, mscorlib]], SignalR]], mscorlib]], mscorlib]], SignalR]])->
  0000000237580080(System.Object[])
RSP:57ae130:Root:  000000012acea438(MyApp.Newsfeed.Hubs.NewsfeedHub)->
  000000012acea5f8(SignalR.GroupManager)->
  0000000185a17328(SignalR.Connection)->
  000000011f655ed0(SignalR.InProcessMessageBus)->
  000000011f656680(System.Collections.Concurrent.ConcurrentDictionary`2[[System.String, mscorlib],[SignalR.Infrastructure.LockedList`1[[System.Action`1[[System.Collections.Generic.IList`1[[SignalR.InMemoryMessage`1[[System.UInt64, mscorlib]], SignalR]], mscorlib]], mscorlib]], SignalR]])->
  0000000237580080(System.Object[])
RSP:57ae140:Root:  000000012acea438(MyApp.Newsfeed.Hubs.NewsfeedHub)->
  000000012acea5f8(SignalR.GroupManager)->
  0000000185a17328(SignalR.Connection)->
  000000011f655ed0(SignalR.InProcessMessageBus)->
  000000011f656680(System.Collections.Concurrent.ConcurrentDictionary`2[[System.String, mscorlib],[SignalR.Infrastructure.LockedList`1[[System.Action`1[[System.Collections.Generic.IList`1[[SignalR.InMemoryMessage`1[[System.UInt64, mscorlib]], SignalR]], mscorlib]], mscorlib]], SignalR]])->
  0000000237580080(System.Object[])
RSP:57ae188:Root:  000000012ace9ea8(SignalR.Hubs.HubDispatcher+<>c__DisplayClass1a`1[[SignalR.Hubs.IDisconnect, SignalR]])->
  0000000185a13640(SignalR.Hubs.HubDispatcher)->
  000000011f655ed0(SignalR.InProcessMessageBus)->
  000000011f656680(System.Collections.Concurrent.ConcurrentDictionary`2[[System.String, mscorlib],[SignalR.Infrastructure.LockedList`1[[System.Action`1[[System.Collections.Generic.IList`1[[SignalR.InMemoryMessage`1[[System.UInt64, mscorlib]], SignalR]], mscorlib]], mscorlib]], SignalR]])->
  0000000237580080(System.Object[])
RSP:57ae190:Root:  000000012ace9ea8(SignalR.Hubs.HubDispatcher+<>c__DisplayClass1a`1[[SignalR.Hubs.IDisconnect, SignalR]])->
  0000000185a13640(SignalR.Hubs.HubDispatcher)->
  000000011f655ed0(SignalR.InProcessMessageBus)->
  000000011f656680(System.Collections.Concurrent.ConcurrentDictionary`2[[System.String, mscorlib],[SignalR.Infrastructure.LockedList`1[[System.Action`1[[System.Collections.Generic.IList`1[[SignalR.InMemoryMessage`1[[System.UInt64, mscorlib]], SignalR]], mscorlib]], mscorlib]], SignalR]])->
  0000000237580080(System.Object[])
RSP:57ae1a0:Root:  000000012acea438(MyApp.Newsfeed.Hubs.NewsfeedHub)->
  000000012acea5f8(SignalR.GroupManager)->
  0000000185a17328(SignalR.Connection)->
  000000011f655ed0(SignalR.InProcessMessageBus)->
  000000011f656680(System.Collections.Concurrent.ConcurrentDictionary`2[[System.String, mscorlib],[SignalR.Infrastructure.LockedList`1[[System.Action`1[[System.Collections.Generic.IList`1[[SignalR.InMemoryMessage`1[[System.UInt64, mscorlib]], SignalR]], mscorlib]], mscorlib]], SignalR]])->
  0000000237580080(System.Object[])
Newsfeed.ClientList.TryRemove(fromHubClient.Key, out newsfeedClient);
我看不到任何与此相关的内容,并且看到了许多对
signar.Infrastructure.LockedList
1[[System.Action
1[[System.Collections.Generic.IList
1[[signer.InMemoryMessage
1[[System.UInt64,mscorlib]],mscorlib]],mscorlib]],mscorlib]],signer]


是否仍有一个内存存在信号器的某些内存泄漏?

信号器0.5.3中存在内存泄漏。我们目前的版本是1.0 alpha2,因此您可能需要更新以使用最新版本