最近写歌程序按照X64编译,放到WIN7 64bit系统下运行,发现内存涨的厉害,仔细检查,查出一处问题就是graphics对象不会自动释放,需要我手动dispose掉,但是同样的程序在WIN XP下就没有这个问题,现在程序做动作,在WIN7下内存还是会涨。
我的程序使用的是.NET FRAMEWORK 4.0,用3.0编译后,在WIN7下就没有问题,
想问一下,.NET 4.0的垃圾回收机制改变了吗?我的程序问题最有可能出在哪里?
------解决方案--------------------
gc启动频率如何不是你的内存决定,而是策略引擎根据代龄情况决定的,64#、server os、gc回收模式等都会影响这个因素;
Dispose()并不会立即启动gc,它只会释放非托管资源;
你在程序中,调用System.GC.Collect();如果调用后你的内存释放了,就说明没问题,相反就要关注你的程序是否有资源使用不合理的地方了