找回密码
 立即注册

QQ登录

只需一步,快速开始

lmbosos

最新发帖
lmbosos
中级会员   /  发表于:2012-10-26 14:59:00
21#
dof, 你好

我想实现的是在第4步操作后释放加载文件所增加的20M内存。

首先我了解到在SheetView.OpenExcel方法的过程中,代码中将FileStream打开并关闭了,同时将其内容存储到了多个 MemoryStream 中,正如你所说 MemoryStream 需要垃圾回收器回收时才能释放。如果没有内存的泄露问题的话,在调用 GC.Collect()方法强迫回收后应该是可以将 MemoryStream 内容回收成功的(在附件中我同时提供了一个例子来证明这一点)。但目前的情况是我修改了你提供的Demo在Form2关闭时进行了4次GC.Collect()强迫回收(从0代、1代、2代及未指定代数的情况),但均未能释放出丝毫的内存。

6522_OpenExcel.rar

152.18 KB, 下载次数: 201

回复 使用道具 举报
lmbosos
中级会员   /  发表于:2012-10-26 15:12:00
22#
补充说明前帖附件中控制台程序,在.net framework 3.5(win7)中使用0代可回收MemoryStream(在任务管理器中可看到),在.net framework 4.0(win xp)中使用1代可回收,在.net framework 4.0(win 7)中使用未指定代数的方法可回收。

但无论是哪种方法MemoryStream是可以被强迫回收的,并且内存变化在任务管理器中也能看到。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-10-26 17:53:00
23#
lmbosos 你好

非常感谢你提供的例子,我会与Spread产品开发团队一块调查该问题,最快下周一会给你回复。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-10-30 20:55:00
24#
lmbosos 你好

经过与产品开发团队的最终确认,这的确是Spread的Bug,现在能够做的就是通过以下代码回收部分资源。给你使用带来的不便,非常抱歉。
  1. GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
复制代码
回复 使用道具 举报
lmbosos
中级会员   /  发表于:2012-10-31 14:02:00
25#
dof, 你好

我想知道何时能够修复此bug,如果此bug修复针对我现在使用的版本是否有升级方案,谢谢!

同时感谢你给出的临时解决方案,我们会暂时使用2代回收部分资源!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-1 11:20:00
26#
lmbosos 你好

非常抱歉我现在无法给你该Bug确切的修复时间,Spread产品每个版本中修复哪些问题由产品开发团队最终确定,一旦该问题得到修复我们会通过邮件通知您。再次抱歉。
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 立即注册
返回顶部