Cordys处理器内存溢出优化分析

本文分析了Cordys Apptoolkit Workflow处理器出现内存溢出的问题,并指出根本原因是应用代码问题。文章提供了优化应用代码的建议,包括减少NOM对象创建、使用特定API等,并给出了监测内存使用的工具。
Cordys处理器内存溢出优化分析

经过CORDYS和集成公司的共同努力,Apptoolkit Workflow处理器内存溢出的根本原因已经定位,确认为 应用代码问题。
对于修改Processor参数、修改系统全局参数、增加BPM处理器等措施,均不能从根本上解决此问题。
 
因此,必须优化应用代码。印度工程师已经提供了如下资料供参考。
以上资料均可从Cordys wiki上获得。
 
在优化过程中,需要特别注意以下几点:
1)尽量少创建NOM对象。
2)使用静态com.eibus.xml.nom.Document对象,不在方法中创建。创建时不使用new  Document(),应使用BSF._getXMLDocument()获得。
3)不使用com.eibus.xml.nom.Find类解析xml,应使用com.eibus.xml.xpath.XPath类,XPath的API请参考 https://wiki.cordys.com/display/dsc/NOM+XPath+Best+Practices
 
另,在目前的代码中发现了很多如下语句:
System.out.println("error");
e.getStackTrace();
应删除或改为记录日志,并请避免在控制台不可用时还向控制台输出。
 
附件中是XPath示例。
FYI.
 
另,在优化代码过程中注意以下场景:
int node_1 = BSF.getXMLDocument().parseString(...); //node_1为根节点
int node_2 = XPath.getFirstMatch(...,...,node_1);//node_2为子节点
此时,只需删除根节点node_1即可,
if(node_1!=0){
Node.delete(node_1);
node_1=0;
}
在根节点删除的同时,子节点会一起删掉。

对于优化结果,需要使用监控工具:jvisualvm,进行监控内容使用情况。配合压力测试效果更好。
推荐文件给你 "Thread_dump_collection_using_Visual_VM.pdf" http://vdisk.weibo.com/s/JEm4w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖永威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值