2012-07-17 66 views
0

我遵循以下教程中的建议:http://humblecoder.co.uk/tag/windbg。我必须指出,说,运行这个命令:!dumpheap。我在第三列中添加了总字节数,并再次将其分为1024和1024。这相当于42MB。有问题的ASP.NET进程大小超过1.5GB。ASP.NET内存泄漏 - OracleConnection/OracleCommand

这是在Windows 2003服务器上完成的,因为没有选项可以在任务管理器中创建转储文件。因此,我必须运行以下cmmand:.dump/ma w3wpdump.dmp。由于这是一个小型转储,有没有可能帮助的东西?

我没有问这个昨天,其中概述了问题的另一个问题:ASP.NET Memory Leak - OracleCommand Object

回答

0

看你的另一个问题是,似乎绝大多数的内存使用量正在使用的字符串。我会转储一些字符串来查看它们内部的内容。您可以使用dddbdu来查看字符串的内容,并为其指定一个字符串实例的内存地址。即dd 0x12345678,它会转储位于那里的内存的原始内容。您可以查看windbg帮助以获取有关d*命令的更多信息。

但是,如果您确定托管堆似乎没有占用内存,那么我会查看非托管堆。 !heap -s会给你一个非托管堆的摘要,这可能是你有多余的内存使用情况。

+0

谢谢。有很多串联在一起的字符串。我知道我应该使用StringBuilder对象。我以前的帖子表明,有19472876字节分配给字符串 - 这是18MB。你会说这是相当多的。 18MB对我来说不太好。创建/使用字符串时是否使用了非托管资源? – w0051977 2012-07-18 08:33:44

+0

对不起,当我第一次看到它们时误读了数量。在这种情况下,我会检查unmanged堆。 – Zipper 2012-07-18 13:52:54

+0

你认为有很多字符串?我没有什么可比的。 – w0051977 2012-07-18 13:58:52