拼接xml时出现内存溢出解决办法
来源:互联网 发布:方块音乐软件 编辑:程序博客网 时间:2024/06/18 09:53
/// designed by Alex /// 解决内存溢出问题,不可使用迭代器和foreach /// 循环遍历List, 别生成xml,一边释放 /// 反向遍历,相当于出栈,避免索引顺序乱的问题 /// 反转List. if (zrate.RateList != null && zrate.RateList.Count != 0) { log.Debug("反转list"); zrate.RateList.Reverse(); log.Debug("循环遍历Zrate List 生成xml"); int policySize = zrate.RateList.Count; for (int index = policySize - 1; index > -1; index--) { SplitPolicy item = zrate.RateList[index]; string strChangePnr = item.IsChangePnr ? "1" : "0"; string strCabin = item.Cabin; try { strCabin = strCabin.Replace("/", ""); } catch { } decimal c = item.Rate + item.RuleRate; string d = item.IsAutoTicket ? "1" : "0"; string strWeekNum = item.WeekNum; if (strWeekNum != "") { strWeekNum = strWeekNum.Replace("/", ","); } string ZtFlightNumber = ""; try { ZtFlightNumber = item.ApplyFlightNumber.Replace('/', ','); } catch { } string ZtNoFlightNumber = ""; try { ZtNoFlightNumber = item.NotApplyFlightNumber.Replace('/', ','); } catch { } string WorkTimeWeekDay = ""; string RefundWorkTimeWeekDay = ""; //工作时间 for (int i = 0; i < 5; i++) { WorkTimeWeekDay = WorkTimeWeekDay + item.WorkTimeWeekDay + ","; RefundWorkTimeWeekDay = RefundWorkTimeWeekDay + item.RefundTimeWeekDay + ","; } //休息日 for (int i = 0; i < 2; i++) { WorkTimeWeekDay = WorkTimeWeekDay + item.WorkTimePlayDay + ","; RefundWorkTimeWeekDay = RefundWorkTimeWeekDay + item.RefundTimePlayDay + ","; } info.Append("<Item Id='" + item.ID + "' State='" + item.Status + "' IsChangePnr='" + strChangePnr + "' "); info.Append("ProviderWorkTime='" + WorkTimeWeekDay.Trim(',') + "' PorviderVWorkTime='" + RefundWorkTimeWeekDay.Trim(',') + "'>"); info.Append(item.DepartCode.Replace("/", ",") + "|" + item.ArriveCode.Replace("/", ",") + "|" + item.AirCompany + "|" + item.TripType + "|"); info.Append(ZtFlightNumber + "|" + ZtNoFlightNumber + "|" + strWeekNum + "|" + item.TicketType + "|"); info.Append(strCabin + "|" + c.ToString("0.000") + "|" + item.SaleBeginTime.ToString("yyyy-MM-dd") + ","); info.Append(item.SaleEndTime.ToString("yyyy-MM-dd") + "|" + item.TravelBeginTime.ToString("yyyy-MM-dd") + ","); info.Append(item.TravelEndTime.ToString("yyyy-MM-dd") + "|" + item.OfficeID + "|"); info.Append(item.AddTime.ToString("yyyy-MM-ddTHH:mm:ss.fff") + "|" + item.ModifyTime.ToString("yyyy-MM-ddTHH:mm:ss.fff") + "|"); info.Append(item.SupplierCode + "|" + item.Remark + "|" + d); info.Append("</Item>"); //同时remove item zrate.RateList.RemoveAt(index); //每10000条调用一次gc,回收前一百条被remove的数据 if (0 == index % 10000) { GC.Collect(); } } } else { log.Error("zrate里的RateList为空!"); } } else { info.Append("<OTA_Alter_AirFareRS>"); info.Append("<Error Code=\"" + zrate.Msg + "\" ShortText=\"" + zrate.Msg + "\" />"); } info.Append("</OTA_Alter_AirFareRS>"); //WriteLog.WriteErrorLogDataInteraction(info.ToString(), "变动政策返回信息"); log.Debug("返回xml成功"); return info.ToString();
0 0
- 拼接xml时出现内存溢出解决办法
- 04-maven 使用maven时,出现内存溢出解决办法
- jdbc读取百万条数据出现内存溢出的解决办法
- ViewPager加载多张图片出现内存溢出的解决办法
- Junit 测试时内存溢出解决办法
- eclipse编译时内存溢出的解决办法
- eclipse启动时内存溢出的解决办法
- 内存溢出的解决办法
- MyEclipse内存溢出解决办法
- Tomcat内存溢出解决办法
- Eclipse内存溢出解决办法
- Tomcat内存溢出解决办法
- Tomcat内存溢出解决办法
- Tomcat内存溢出解决办法
- Tomcat内存溢出解决办法
- tomcat内存溢出解决办法
- Android 内存溢出 解决办法
- 内存溢出解决办法
- Android 系统默认音量和最大音量
- Criteria 和 DetachedCriteria的区别与使用
- 关于js中window.location.href,location.href,parent.location.href,top.location.href的用法
- 详解Buffer Header--DUMP buffer结合X$BH视图各字段
- 使用Delayed job处理Rails中的异步任务
- 拼接xml时出现内存溢出解决办法
- 基于划分的字符串相似性连接
- android 简单tabHost的用法
- ORA-00257 archiver error. 错误的处理方法
- TCP拥塞控制算法 调整TCP拥塞控制算法 TCP Congestion Avoidance Algorithm
- Linux如何在系统启动时自动加载模块(转)
- 【转载】C#调用外部.exe文件
- 45个CSS热门资料源码打包下载
- java 网站