惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - Franky
U
Unit 42
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
博客园 - 【当耐特】
罗磊的独立博客
B
Blog
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
爱范儿
爱范儿
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MyScale Blog
MyScale Blog
阮一峰的网络日志
阮一峰的网络日志
H
Help Net Security
S
SegmentFault 最新的问题
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
L
LangChain Blog
T
Tailwind CSS Blog
WordPress大学
WordPress大学
GbyAI
GbyAI
Blog — PlanetScale
Blog — PlanetScale
V
Visual Studio Blog
Vercel News
Vercel News
Recent Announcements
Recent Announcements
博客园 - 司徒正美
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Security Latest
Security Latest
T
Threat Research - Cisco Blogs

博客园 - 拖鞋不脱

【原】Silverlight内存泄漏原因、检测及解决(Memory Leak of Silverlight:Reason、Detection and Solving) 【随】不好用的Ria Services 【原】检测是否包含特定字符串的几种方法以及性能比较 【原】StreamInsight 浅入浅出(六)—— Debugger 【原】StreamInsight 浅入浅出(五)—— LINQ 语法 【原】StreamInsight 浅入浅出(四)—— 例子 【原】StreamInsight 浅入浅出(三)—— 适配器 【原】StreamInsight 浅入浅出(二)—— 流与事件 【原】Silverlight 自定义控件模板管理 【原】StreamInsight 浅入浅出(一)—— 基本概念 【原】小软件开发心得(二)——推广、测试 【原】小软件开发心得(一)——需求、开发 【原】豆瓣电台桌面版插件开发——搜索插件 【原】豆瓣电台桌面版——Win7任务栏支持+托盘+快捷键+历史记录 【原】Sql Server性能优化——Slide Window 【原】Sql Server性能优化——Partition(管理分区) 【原】Sql Server性能优化——Partition(创建分区) 【原】Sql Server性能优化——Compression 【译】VS2010中C#的增强
【随】Silverlight请求服务的缓存文件问题
拖鞋不脱 · 2010-03-06 · via 博客园 - 拖鞋不脱

2010-03-06 17:23  拖鞋不脱  阅读(1451)  评论()    收藏  举报

问题描述

用Silverlight和WCF做上传图片,结果图片上传一半就报了错,然后屏幕右下角弹出“磁盘空间不足”的警告,发现C盘竟然只剩下十几兆的空间了。刷新一下页面,C盘空间又恢复了原来的大小(1G左右)。

问题原因

经过一番检查,发现Silverlight在调用Web服务的时候,每个请求都会在系统盘生成临时文件(在Win7下,位置是C:\Users\用户名\AppData\Local\Temp\),临时文件以XCP做前缀,然后跟以一串4位数字,并且每个临时文件都是20M

image

而且只有当网站部署在IIS中通过IE内核的浏览器浏览时才会出现这种情况,非IE内核浏览器或者网站在VS中都不会生成相应的临时文件。

考虑20M和在ServiceReferences.ClientConfig中默认设置的

maxBufferSize="2147483647"  maxReceivedMessageSize="2147483647"

大小上是一致的,所以尝试改变了一下这两个数值(要求必须一致),但临时文件的大小并没有改变。

所以导致临时文件产生的根本原因并没有找到,而且怀疑这就是Silverlight的一个Bug……平视没有注意到是因为请求不频繁,而且临时文件会在一定时间后自动清除,但由于图片上传将图片分成了很多小份,每一份都会调用一次服务,而原有的临时文件又没有很快清除,所以1G的空间很快就被吃掉了。

解决办法

通过Google大神,查到有同样问题的仁兄:

Silverlight 3 creates a lot of XCP temp files (20MB each)

http://www.anythingtheycando.com/blog/index.php/2010/02/02/silverlight-temp-file-issue/ (需翻)

找到了解决这一问题的办法:

在每个服务请求的回调函数中调用GC.Collect();强制清除这一缓存文件。事实上我也不是很明白GC.Collect()为什么会回收这种临时文件垃圾……谁让咱连它怎么产生的都不知道呢。

虽说GC.Collect()对性能会产生影响,但为了程序正常运行计,也不得不如此了,但愿Silverlight4能解决这一问题。