/// 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. 直播 linux上的第一个c++程序

    这里用crt来直播吧: 登录到服务器上之后: 1.mkdir -p 建一个文件夹 2.ll 查看一下这个文件夹 3.cd 进入这个文件夹 4.vim 进行文本编辑 写完之后,按下esc中止输入模式,用 ...

  2. 渐变颜色的进度条WGradientProgress-备用

    今天我们来实现一个iOS平台上的进度条(progress bar or progress view).这种进度条比APPLE自带的更加漂亮,更加有“B格”.它拥有渐变的颜色,而且这种颜色是动态移动的, ...

  3. 在C语言控制台程序中播放MP3音乐

    游戏没有声音多单调. 这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,先看看代码吧: // 编译该范例前,请把 background.mp3 放在项目文件夹中 // ...

  4. 这样就算会了PHP么?-5

    汇集一点关于数据深入一些的几个函数,去重,弹出,加入,查找.... <?php $str = "时装,休闲,职业装"; $strs = explode(",&quo ...

  5. 自制单片机之十……AT89S51的上拉电阻问题

    很多网友都问我AT89S51的P0口为什么要接一个上拉电阻.我就用一个篇幅来说一说 P0口和其它三个口的内部电路是不同的,如下图 P0口是接在两个三极管D0和D1之间的,而P1-P3口的上部是接一个电 ...

  6. TextWatcher编辑框监听器

    TextWatcher tw = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int sta ...

  7. 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠

    笨笨太好玩了,农田荒芜了,彩奖用光了,笨笨只好到处找工作,笨笨找到了一份粉刷匠的工作.笨笨有n条木板需要被粉刷.每条木板被分成m个格子,每个格子要被刷成红色或蓝色.笨笨每次粉刷,只能选择一条木板上一段 ...

  8. 移动互联与O2O的完美衔接

    移动互联网虽然市场颇大,前景广阔,但是由于数据过于密集,很难精准的定位所谓的目标客户群,然而O2O的线下市场却与互联网市场有极大的反差.一直觉得高校周边的小商家是最幸福的生意人,客户明确(就是本校学生 ...

  9. SelectSort 选择排序

    //SelectSort (( O(n²))) public class TestSelectSort { public int[] selectSortArray(int[] arr){ int m ...

  10. HTML--控制小人自由移动

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...