手动调用GC,这个值该设多大?

kaukiyou 2010-03-09 03:54:21
32位windows 2003 server,web服务器为IIS 6。
服务器上有几个网站,独立使用自己的pool,每个app pool的最大内存使用限制为800M,超过这个数目就回收pool池的资源。

我的网站,有几个地方比较好资源,会发生因为超过内存限制而回收,重启。

所以写了个判断,及时强制回收,请问这个值多大好呢,540 million, 600 million,还是多少?

肯定不是800M,因为这时已经超过限制了。

if (GC.GetTotalMemory(false) > 540,000,000)
{
GC.Collect(1, GCCollectionMode.Forced);
}
...全文
516 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaukiyou 2010-03-10
  • 打赏
  • 举报
回复
有人吗, 帮忙说下哈。
kaukiyou 2010-03-10
  • 打赏
  • 举报
回复
为啥GC.Collect(0, GCCollectionMode.Forced)没用。
直接GC.Collect()反而内存下降很多。
hitlcyu19 2010-03-10
  • 打赏
  • 举报
回复
引用 2 楼 vrhero 的回复:
最好的方法是不要调用GC.Collect...

优化代码才是正道...

嗯嗯 是啊 还是自己将代码优化了比较好
kaukiyou 2010-03-10
  • 打赏
  • 举报
回复
不管了,反正就有4个不常用的地方调用。
已定为400,000,000
if (GC.GetTotalMemory(false) > 400000000)
{
GC.Collect(0, GCCollectionMode.Forced);
}
yingzhilian2008 2010-03-10
  • 打赏
  • 举报
回复
引用 14 楼 wuyq11 的回复:
及时释放对象,优化代码
如 using
using 自动回收的
wuyq11 2010-03-09
  • 打赏
  • 举报
回复
及时释放对象,优化代码
如 using
鸭梨山大帝 2010-03-09
  • 打赏
  • 举报
回复
能说下为什么不能优化了?
你把几百页的PDF同时生成保存到内存中,肯定内存不足.
能不能考虑一部分的处理,一部分的写入呢?

引用 12 楼 kaukiyou 的回复:
生成pdf这部分,没办法优化.
还是强制GC吧.
kaukiyou 2010-03-09
  • 打赏
  • 举报
回复
生成pdf这部分,没办法优化.
还是强制GC吧.
archu 2010-03-09
  • 打赏
  • 举报
回复
谁跟你说GC占内存的?不要误导别人啊。

引用 9 楼 lcl_data 的回复:
GC也要占内存的


也要占CPU的,
还是要从根本上解决问题,优化代码
kaukiyou 2010-03-09
  • 打赏
  • 举报
回复
谢谢你们,我决定了要优化代码.
十八道胡同 2010-03-09
  • 打赏
  • 举报
回复
GC也要占内存的


也要占CPU的,
还是要从根本上解决问题,优化代码
qq497525725 2010-03-09
  • 打赏
  • 举报
回复
要是必须用到垃圾回收的话 就这样吧。

GC.Collect(0);
GC.WaitForPendingFinalizers();

一起用
xiezechang 2010-03-09
  • 打赏
  • 举报
回复
.
引用 3 楼 whb147 的回复:
强制调用GC.Collect...
说不定会有意外呢
建议还是优化代码
spaea 2010-03-09
  • 打赏
  • 举报
回复
如其它人所建议的那样,尽量不要调用GC.Collect
频繁调用GC.Collect会导致100% CPU,而真正的请求就无法响应

至于你所谓的耗资源,只要用完之后立即释放(var = null),那么当内存不够用的时候,CLR会自动帮你回收内存的.

前面你所谓的回收Apppool,建议你不要设置800M(还不知道你这个800是指虚拟内存还是物理内存呢),如果是物理内存,800M确实是一个合适的值,但是根本解决办法是找到你内存泄露的代码段,进行改进
鸭梨山大帝 2010-03-09
  • 打赏
  • 举报
回复
楼主这是典型的:头痛医脚

"我的网站,有几个地方比较好资源,会发生因为超过内存限制而回收,重启。"

这个才是问题的关键.耗资源会超过单进程1.7G?(除非是大型3D游戏没有优化好的时候才可能,
一般Web应用,写这种代码就是直接送网站进坟墓... ...

另外,建议不要随便手动去回收GC.
kaukiyou 2010-03-09
  • 打赏
  • 举报
回复
优化。。。不太容易啊。

都是生成几百页的pdf和xls。
whb147 2010-03-09
  • 打赏
  • 举报
回复
强制调用GC.Collect...
说不定会有意外呢
建议还是优化代码
vrhero 2010-03-09
  • 打赏
  • 举报
回复
最好的方法是不要调用GC.Collect...

优化代码才是正道...
kyoybs 2010-03-09
  • 打赏
  • 举报
回复
这个方法好像有点被动,优先考虑优化业务代码吧。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧