我最近继承了一个经典ASP网站的维护,我之前从未做过经典ASP,所以如果我问愚蠢的问题,请原谅我。
我的共同开发人员已经浏览过每一页,以确保关闭sql连接,清空集合然后设置为null。然而,这是一个很大的网站,显然我们之间错过了一些东西。
当它被泄漏时(由调试diag采取)我有一个转储进程。当我使用debug diag执行它的内存分析时,它通知我没有检测到LeakTrack.dll,因此无法执行泄漏分析。
我已经使用windbg打开了转储,并且找到了一个比其他堆大得多的堆,其中90%的内存在一个堆中。但是,当我尝试跟踪块回到分配它们的调用堆栈时,我总是最终得到:
invalid allocation size, possible heap corruption
有没有更好的方法来尝试跟踪泄漏的来源?或者您是否有关于如何创建更好的流程转储的任何提示,以便我可以检查泄漏的来源?
答案 0 :(得分:1)
这些漏洞持续超过一页?页面完成后,应清除所有页面本地内容并取消分配。如果不了解您的应用程序,我建议您查看更受欢迎的对象。您是在会话或应用程序中存储任何内容吗?