一年前,@GilShalit发布了一条评论:
"好吧,在我们使用ODP(.Net 2.0)处理GetOracleDecimal的代码时,我们因为一个内存泄漏问题(是我们提供给客户的代码)而不再信任它,已经纠结了一年时间...祝好运!" - GilShalit Aug 27 '09 at 12:44
你是如何解决这个问题的呢?
我们有一个服务每隔几分钟会查询Oracle数据库,但是会导致内存无法释放;通过使用WinDbg进行一些调查,我发现在finalize队列中积累了大量的Oracle.DataAccess.Types.OpoDecCtx类型。
以下是我认为存在问题的那行代码:
decimal volume = (decimal)OracleDecimal.SetPrecision(reader.GetOracleDecimal(5), 28);
我将这段代码注释掉后,内存泄漏问题消失了。
如果您有任何想法,请不吝赐教 - 谢谢!
OracleDecimal.SetPrecision(reader.GetOracleDecimal(5), 28).Value
会有什么不同,而不是强制转换? - V4Vendetta