使用axis调用webService,系统运行一段时间后,出现了 OOM,还好日志中 记下了错误信息。

Exception in thread "Thread-1301" java.lang.OutOfMemoryError: Java heap space
at org.apache.xerces.dom.DeferredDocumentImpl.createChunk(Unknown Source)
at org.apache.xerces.dom.DeferredDocumentImpl.ensureCapacity(Unknown Source)
at org.apache.xerces.dom.DeferredDocumentImpl.createNode(Unknown Source)
at org.apache.xerces.dom.DeferredDocumentImpl.createDeferredDocument(Unknown Source)
at org.apache.xerces.parsers.AbstractDOMParser.startDocument(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:388)
at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:179)
at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
at org.apache.axis.AxisEngine.<init>(AxisEngine.java:156)
at org.apache.axis.client.AxisClient.<init>(AxisClient.java:52)
at org.apache.axis.client.Service.getAxisClient(Service.java:104)
at org.apache.axis.client.Service.<init>(Service.java:113)
at catic.hotel.server.webservice.PmsServiceData.<init>(PmsServiceData.java:26)
at catic.hotel.server.task.SendCmdTask.<init>(SendCmdTask.java:200)
at catic.hotel.server.task.TaskFactory.getTask(TaskFactory.java:155)
at catic.hotel.server.server.ReadData.read(ReadData.java:82)
at catic.hotel.server.server.ReadData.run(ReadData.java:57)

  由于系统会频繁的进入到 SendCmdTask,而我又在此构造方法中不停的new PmsServiceData(),而PmsService的无参构造方法中又new Service(),相当于导致了Service对象不停的被实例化,时间久了,则出现OOM。

解决方法:

  对PmsServiceData使用单例模式,即:

    private static PmsServiceData pmsServiceData = null;

    // 单例
public static synchronized PmsServiceData getInstance(){
if(null == pmsServiceData){
pmsServiceData = new PmsServiceData();
}
return pmsServiceData;
}

问题解决。

最新文章

  1. 众人口中的JAVASCRIPT
  2. jquery的$.ajax async使用详解
  3. JS常用的腳本庫--包括在線編輯器
  4. Fixflow引擎解析(二)(模型) - BPMN2.0读写
  5. XCode实用好用插件集锦
  6. java数据类型和运算优先级
  7. [Java] Java IO Files
  8. C++ Primer 学习笔记_53_类和数据抽象 --友元、static员
  9. java 中关于json的使用方法
  10. wildfly 如何设置外网访问
  11. Hibernate三种状态及生命周期
  12. docker~大叔对术语的解释
  13. C#读取OPC server
  14. php yii 命令
  15. hadoop和spark相关参数的配置
  16. Masonry 适配label多行
  17. 4.6 Routing -- Rendering A Tempalte
  18. SpringBoot Session 管理及集群管理
  19. MySQL 视图、触发器、函数、存储过程
  20. openresty package.path require 报错

热门文章

  1. C语言中static作用
  2. 求n!末尾0的个数
  3. Swift POP+MVVM
  4. 网络获取的XML的Pull解析
  5. Boyer Moore算法(字符串匹配)
  6. Light OJ - 1058 Parallelogram Counting(判定平行四边形)
  7. Lightoj 1004 - Monkey Banana Problem
  8. 利用工具MailUtils实现邮件的发送,遇到的大坑,高能预警!!
  9. MyEclipse8.5安装findbugs方法
  10. C#调用C++动态库时类型转换