|
1
2
任何合适的内存探查器都将向您显示控制实例。它们不会被垃圾收集,它们的手柄属性使它们能够存活。其中将有近10000个。您还可以使用任务管理器查看它,使用视图+选择列并勾选用户对象。在测试应用程序时观察计数的增加应该会提供一个不错的提示。 代码审查也应该有很长的路要走,没有那么多可能的方法来泄漏一个窗口。首先查找最常见的情况,即调用controls.clear()或controls.remove/at()但不处理该控件的代码。下一个常见的情况是SystemEvents类,您必须显式取消订阅它的事件。剩下的不太容易找到,你需要那个剖析器。 在运行时找到自己的句柄在技术上是可以通过反射实现的。句柄存储在System.Internal.HandleCollector.HandleTypes[]中。从技术上讲。 |
|
|
2
0
实现的每个对象
|
|
|
3
0
如果未收集它们是因为其他某个对象正在引用您的控件,那么调用Dispose或将Parent设置为空都是不够的。也许你是在关注事件,而不是脱离它们。 特别检查附加到不包含在附加程序中的控件的事件的情况,在这种情况下,在处理控件时应始终与事件分离,否则附加程序仍将引用该控件,因此不会释放它。 |
|
|
SkyBlue · Java Spring服务的内存/垃圾收集器问题 2 年前 |
|
|
Guy_Hanan · 一个关于C++程序内存泄漏的问题 2 年前 |
|
|
yeerk · 在Python中跟踪特定对象的引用(内存泄漏) 2 年前 |
|
|
Priyanshu Sinha · Django内存泄漏/工人人数减少 2 年前 |
|
|
lHumanizado · Golang defer并不总是执行 3 年前 |