写了个东西,发现内存的使用会一直上涨,和内存泄漏的状况差不多,一个小时以后内存可以长到300多兆,虚拟内存可以达到300~500兆,然后CPU到使用率也非常的高。后来想想C#有内存自动回收机制,问题应该不会在C#上,那估计就是Silverlight播视频的问题了。
于是用同样一部电影分别开了两个服务:一个HTTP服务,一个MMS服务,然后Silverlight用两种方式来播放这部电影。测试结果非常的明显:
对于使用HTTP协议的视频,内存可以迅速涨到200多兆,然后内存的增长速度几乎就是下载速度,每秒十几兆的增加,缓存增长速度相对内存增长速度则显得非常之慢。
对于使用MMS协议的视频,内存在一直维持在37兆,偶有跳动,但一直在37兆左右跳动,半个多小时都不曾增加内存使用,而且CPU使用率明显低于使用HTTP方式请求视频。
不知道Silverlight是不是把基于HTTP请求的视频直接下载在内存中,然后把播放过的写入虚拟内存?