我有一个工作角色,它运行多个线程(我使用的是ThreadedWorkerRole)。我的工作人员角色下载一些数据,然后下载与数据相关的图像。本地一切正常,但当我在Azure上部署应用程序时,它首先显示合理的内存使用情况(48 MB),然后在1或2小时内拍摄到800 MB。我的应用程序确实在处理含有大量“使用”语句的对象并正确关闭流。但我仍然想知道是什么导致记忆跳到如此高的价值。还有一件事,我使用了下载数据和图像的RETSLib(PInvoke库打击RETS服务器)。它可能是非托管代码的问题吗?工作角色以合理的内存使用情况开始,但内存使用量不断增加
0
A
回答
1
它肯定是非托管代码泄漏内存的问题。 RETSLib是librets上的一个.NET包装器吗?一些对librets leaking memory的php实现的引用。
您提到“下载一些数据,然后下载与该数据相关的图像”。你是使用实体框架来获得这个初始数据还是将它存储到SQL中?如果是这样,我假设你处理ObjectContext。 EF 4.0似乎有一些内存问题。
A link (old)谈到这一点。
可以添加此作为评论,但stackoverflow不会允许我这样做,因为我的低代表点
相关问题
- 1. iPad内存使用量不断增加
- 2. 切断UIImage内存使用情况
- 3. 使用SDL_TTF时,C++程序内存使用量不断增加
- 4. 内存使用量增加。释放内存不被重用
- 5. Flash总内存使用情况和TaskManager内存使用情况不一样?
- 6. 内存使用情况
- 7. iphone内存使用情况
- 8. Tcl_Format内存使用情况
- 9. Silverlight内存使用情况
- 10. IronPython内存使用情况
- 11. Java内存使用情况
- 12. V8内存使用情况
- 13. Listview内存使用情况
- 14. Linux内存使用情况
- 15. Android内存使用情况
- 16. java内存使用情况
- 17. CCLabelBMFont内存使用情况
- 18. IIS内存使用情况
- 19. BlackBerry内存使用情况
- 20. Cocos2d纹理内存使用情况
- 21. Java进程的内存使用量不断增加无限
- 22. gdb巨量内存使用情况
- 23. 如何测量内存使用情况
- 24. Android模拟器内存使用量不断增加
- 25. URL监视器不断增加内存使用量
- 26. Rails不断增加内存
- 27. 是否可以使用d8来衡量内存使用情况?
- 28. 在Android中快速增加内存的使用情况
- 29. 增量内存使用
- 30. 在Eclipse中增加JRE内存使用情况
Thanx的快速回复。是的,我正在使用librets(.net包装),我根本不使用EF。还有一件事,当worker角色在运行时,我绝对无法卸载非托管库。我该如何处理这种泄漏? – ZafarYousafi 2013-05-09 13:14:48
卸载dll不会解决内存泄漏,因为加载操作会将dll加载到应用程序的进程空间中。你可以尝试把DLL加载和卸载到一个单独的进程,并杀死该进程(?) – eightyeight 2013-05-10 09:35:16