为什么异步固定句柄会占用内存

时间:2015-03-11 13:16:37

标签: .net memory-leaks windbg perfview

我正在尝试用我的应用程序调查内存问题。这是.NET堆大小。

0:000> !EEHeap -gc
Number of GC Heaps: 4
------------------------------
Heap 0 (000000000111f740)
generation 0 starts at 0x000000019eb31750
generation 1 starts at 0x000000019e41f328
generation 2 starts at 0x0000000180091000
ephemeral segment allocation context: (0x000000019eb31750, 0x000000019eb31768)
 segment     begin allocated  size
0000000180090000  0000000180091000  00000001a4591d38  0x24500d38(609226040)
Large object heap starts at 0x0000000580091000
 segment     begin allocated  size
0000000580090000  0000000580091000  0000000580e3e868  0xdad868(14342248)
Heap Size:               Size: 0x252ae5a0 (623568288) bytes.
------------------------------
Heap 1 (000000000112afd0)
generation 0 starts at 0x000000029df85cb8
generation 1 starts at 0x000000029d7e5d78
generation 2 starts at 0x0000000280091000
ephemeral segment allocation context: (0x000000029df85cb8, 0x000000029df85cd0)
 segment     begin allocated  size
0000000280090000  0000000280091000  00000002a54d7f40  0x25446f40(625241920)
Large object heap starts at 0x0000000590091000
 segment     begin allocated  size
0000000590090000  0000000590091000  00000005927a0a90  0x270fa90(40958608)
Heap Size:               Size: 0x27b569d0 (666200528) bytes.
------------------------------
Heap 2 (0000000001137180)
generation 0 starts at 0x000000039d8552c0
generation 1 starts at 0x000000039d006788
generation 2 starts at 0x0000000380091000
ephemeral segment allocation context: (0x000000039d8552c0, 0x000000039d8552d8)
 segment     begin allocated  size
0000000380090000  0000000380091000  00000003a483c878  0x247ab878(612022392)
Large object heap starts at 0x00000005a0091000
 segment     begin allocated  size
00000005a0090000  00000005a0091000  00000005a12444f8  0x11b34f8(18560248)
Heap Size:               Size: 0x2595ed70 (630582640) bytes.
------------------------------
Heap 3 (0000000001144530)
generation 0 starts at 0x000000049ea19638
generation 1 starts at 0x000000049e1cfbb0
generation 2 starts at 0x0000000480091000
ephemeral segment allocation context: (0x000000049ea19638, 0x000000049ea19650)
 segment     begin allocated  size
0000000480090000  0000000480091000  00000004a4969bb8  0x248d8bb8(613256120)
Large object heap starts at 0x00000005b0091000
 segment     begin allocated  size
00000005b0090000  00000005b0091000  00000005b08a0e90  0x80fe90(8453776)
Heap Size:               Size: 0x250e8a48 (621709896) bytes.
------------------------------
GC Heap Size:            Size: 0x9784c728 (2542061352) bytes.

当我运行perfView时,它显示AsyncPinned处理占用大部分内存,如下所示。

enter image description here enter image description here

这就是!Gchandles正在展示。

Handles:
    Strong Handles:       7653
    Pinned Handles:       16
    Async Pinned Handles: 1183
    Weak Long Handles:    2412
    Weak Short Handles:   918
    Dependent Handles:    2

我对AsyncPinned句柄了解不多,但我怎么知道哪些对象正在创建这些句柄,谁阻止了这些句柄以及为什么这些句子没有得到清理?

修改 我已经阅读了makred重复的链接,但我试图找出如何知道创建这些AsyncPinned句柄的位置,该链接中没有解释

0 个答案:

没有答案