工作者角色从合理的内存使用开始,但随后内存使用量不断增加

时间:2013-05-09 10:06:09

标签: memory-management pinvoke azure-worker-roles

我有一个运行多个线程的辅助角色(我使用ThreadedWorkerRole)。我的工作者角色下载一些数据,然后下载与该数据相关的图像。一切都在本地工作正常但是当我在azure上部署应用程序时,它首先显示合理的内存使用量(48 MB),然后在1或2小时内拍摄到800 MB。我的应用程序确实处理了大量“使用”语句并正确关闭流的对象。但我仍然想知道是什么导致记忆跳得如此之高。还有一件事,我使用RETSLib(PInvoke库命中RETS服务器)来下载数据和图像。它可能是非托管代码的问题吗?

1 个答案:

答案 0 :(得分:1)

绝对可能是非托管代码泄漏内存的问题。 RETSLib是librets上的.net包装器吗?一些对librets leaking memory的php实现的引用。

你提到“下载一些数据,然后下载与该数据相关的图像”。您是否使用Entity Framework获取此初始数据或将其存储到SQL中?如果是这样,我假设你处理了ObjectContext。有些情况下EF 4.0似乎有一些内存问题 一个link (old)谈到这一点。

可以将此作为评论添加,但由于我的低代表点,stackoverflow不允许我这样做