Mac上的Silverlight - 如何调试内存泄漏?

时间:2012-03-21 20:52:59

标签: silverlight macos memory-leaks

我写了一个Silverlight应用程序,作为亚马逊S3的上传器。它在PC上工作正常,但在Mac上它有很大的内存泄漏。

问题:我不知道如何调试它。谷歌的最高建议WinDbg显然已经出局了。我不认为我可以从VS内部获得线索(通过远程调试连接时)。我没有检查过,但我认为Mac OS调试器不会有用。

具体行为是,当文件上传时,它会保留在内存中。由于文件大小可能是几GB,因此它们可能会耗尽所有内存并导致Silverlight崩溃。我想这可能是Silverlight中的一个错误,但如果我知道确切的问题,也许我可以找到解决方法。在Windows上还有一个确认的错误https://connect.microsoft.com/VisualStudio/feedback/details/674960/writing-to-ms-internal-internalwebrequeststream-deadlocks-when-host-closes-request-stream#details,没人想要解决。

这就是我使用被其制造商否认的技术所得到的,我想。

3 个答案:

答案 0 :(得分:2)

事实证明,HttpWebRequest.AllowWriteStreamBuffering = false错误(或我的Windows解决方法)导致Mac上可怕的内存泄漏(以及其他死锁)。所以我被迫启用缓冲。现在一切正常,成本不稳定的进度和上传速度报告。

太糟糕了,我没有学会用于归纳地解决这个问题的方法。不得不通过或多或少的机会发现它。

答案 1 :(得分:0)

您是否尝试过设置remote debugging on the mac?它可能无法追踪内存泄漏,但至少可以逐步查看代码以查看正在发生的事情。

答案 2 :(得分:0)

我尝试针对Windows版本运行一个分析器,例如SciTek .NET Memory Profiler,并验证您是否正确处理了所有对象,而不是实际泄漏。希望这可以正确地转换为Mac。 (大多数程序员在妥善处理他们的对象方面非常糟糕。是的,它确实很重要。)