/// designed by Alex
/// 解决内存溢出问题,不可使用迭代器和foreach
/// 循环遍历List, 别生成xml,一边释放
/// 反向遍历,相当于出栈,避免索引顺序乱的问题
/// 反转List.
if (zrate.RateList != null && zrate.RateList.Count != )
{
log.Debug("反转list");
zrate.RateList.Reverse();
log.Debug("循环遍历Zrate List 生成xml");
int policySize = zrate.RateList.Count;
for (int index = policySize - ; index > -; index--)
{
SplitPolicy item = zrate.RateList[index];
string strChangePnr = item.IsChangePnr ? "" : "";
string strCabin = item.Cabin;
try
{
strCabin = strCabin.Replace("/", "");
}
catch { }
decimal c = item.Rate + item.RuleRate;
string d = item.IsAutoTicket ? "" : "";
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 = ; i < ; i++)
{
WorkTimeWeekDay = WorkTimeWeekDay + item.WorkTimeWeekDay + ",";
RefundWorkTimeWeekDay = RefundWorkTimeWeekDay + item.RefundTimeWeekDay + ",";
}
//休息日
for (int i = ; i < ; 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();

拼接xml时出现内存溢出解决办法的更多相关文章

  1. linux中tomcat内存溢出解决办法

    用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出 ...

  2. java 大数据处理之内存溢出解决办法(一)

    http://my.oschina.net/songhongxu/blog/209951 一.内存溢出类型 1.java.lang.OutOfMemoryError: PermGen space JV ...

  3. Tomcat内存溢出解决办法

    使用Java程序从数据库中查询大量的数据时出现异常:java.lang.OutOfMemoryError: Java heap space在JVM中如果98%的时间是用于GC且可用的 Heap siz ...

  4. Jmeter之内存溢出解决办法

    使用Jmeter进行压力测试会遇到一段时间后报内存溢出的错误,导致Jmeter卡死.这是因为Jmeter默认的HEAP配置的太小了,解决办法如下: 1.Windows环境   修改jmeter.bat ...

  5. 图片生成操作属性导致WP内存溢出解决办法

    在开发的项目中,发现经常会出现异常 “内存溢出,不能再继续执行程序”,通过搜索一些国外的文章,发现原来是由于项目中的图片比较多,而生存操作设为了“内容”.通过设置图片的生成操作为“无”,复制操作为“如 ...

  6. jmeter内存溢出解决办法

    原文:http://blog.51cto.com/xqtesting/2107927 使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了,先尝试在 ...

  7. myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法

    摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考 PermGen s ...

  8. Android加载大量图片内存溢出解决办法

    当我们在做项目过程中,一遇到显示图片时,就要考虑图片的大小,所占内存的大小,原因就是Android分配给Bitmap的大小只有8M,试想想我们用手机拍照,普通的一张照片不也得1M以上,所以androi ...

  9. myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小 java.lang.OutOfMemoryError: PermGen space及其解决方法

    Window->Preferences->MyEclipse->Servers->Tomcat x.x->JDK->Optional Java VM argumen ...

随机推荐

  1. python 3.5 猜数字游戏

    #!/usr/bin/env python #encoding: utf-8 number = 88 for i in range(1,6): num = int(input('gusee numbe ...

  2. Ubuntu12.04 下svn服务搭建及Windows客户端tortoisesvn的使用

    在Ubuntu服务端搭建apache+svn 在客户端使用Tortoisesvn工具. 第一步 安装SVN $sudo apt-get install subversion 安装成功后系统会自动建立一 ...

  3. leetcode_question_112 Path Sum

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  4. 黑马程序员_Java面向对象3_多态

    5.面向对象_多态 多态定义:某一种事物存在的多种形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型. 猫 x = new 猫(); 同时猫也是动物的一种,也可以把猫称为动物. 动物 y = n ...

  5. Display number of replies in disscussion board

    how to display number of replies in disscussion board I have a require about display the replies' nu ...

  6. c语言typedef运用之结构体

    #include <stdio.h> #include <stdlib.h> typedef struct stu { ]; int score; }stu_info; int ...

  7. hdu 5410 CRB and His Birthday(混合背包)

    Problem Description Today is CRB's birthday. His mom decided to buy many presents for her lovely son ...

  8. UESTC 1811 Hero Saving Princess

    九野的博客,转载请注明出处 http://blog.csdn.net/acmmmm/article/details/11104265 题目链接 :http://222.197.181.5/proble ...

  9. docke 网络配置2

    一,docker 的bridge模式是和vmware中的nat模式类似的,但是如果想要弄成和vmwae中的bridge怎么办呢? 说明,bridge模式获取的Ip是与宿主机的ip是出于同一个网段的. ...

  10. ios浅谈关于nil和 NIL区别及相关问题(转)

    转自:http://blog.csdn.net/guozh/article/details/8469131 个就是将引用技术减1,所谓的引用计数就是看看有多个指针指向一块内存实体,当release一次 ...