Debugging Tools for Windows |
!icpleak扩展在系统中查找队列中条目个数最大的I/O completion对象。
Windows 2000 | 不可用 |
Windows XP和之后 | Kdexts.dll |
该扩展在I/O completion池存在泄漏的情况下很有用。I/O completion pool 泄露在进程调用PostQueuedCompletionStatus分配I/O completion packet,但是又没有调用GetQueuedCompletionStatus来释放,或者进程将completion entries排队到某个端口,但是又没有任何线程会取出这些entries时就会发生。通过运行!poolused扩展并且检查ICP pool tag的值来发现泄露。如果有使用ICP tag的池(pool),那么就可能发生了泄露。
该扩展只有在系统维护了类型列表(type lists)时才能工作。如果设置了HandleFlag并且系统中有很多进程,则可能需要运行很长时间。
可以按下CTRL+BREAK (WinDbg中) 或者CTRL+C (KD中)来中止命令。
关于I/O完成端口( I/O completion port)的信息,查看Mark Russinovich 和David Solomon编写的Microsoft Windows Internals。