当前位置: 首页 > news >正文

Domino JVM异常

问题描述:在OA中,分别出现了下列异常。
异常一:

异常二:

异常三:
2007-10-25 09:45:47   HTTP JVM: -->java.lang.OutOfMemoryError: JVMCI015:OutOfMemoryError, cannot create anymore threads due to memory or resource constraints
错误分析:根据上面提示信息,可以初步断定一是服务器内存或虚拟内存不足,二是domino自带的java虚拟机
出了问题。在网上查阅资料,发现主要原因是domino自带的java虚拟机不会自动释放资源,导致虚拟机内存耗
尽,在调用java代理时出现溢出。

官方说明:
Each document opened in an agent allocates a private handle. When the document is closed by
the agent, the handle is freed. Loops can be tricky. If the document isn''t closed after processing, a handle will be allocated for every document processed in the loop.
This isn''t a concern in small databases with few documents processed, but in larger databases,
 it can become an issue.
之后在designer帮助中,找到:
Java has no knowlege of the heavyweight back-end Domino Objects, only the lightweight Java
objects representing them. Garbage collection has no effect on Domino Objects unless you first
 explicitly recycle them.

解决方案:
 用LS代理代替所有java代理,这是维持系统稳定的最好方案,在万不得已要用java代理时可以采取下列
方案补救,但不排除发生异常的可能。
 1.及时地对所用到Notes Object(session,agentContext,db,view,document. 等等)进行Recycle()
处理。在代理调用完成时再进行System.gc();System.finalize()。
可以参考IBM网站上的这篇文章:
http://www-1.ibm.com/support/docview.wss?uid=swg21097861;
 2.在循环中要注意及时的释放资源:
 while (Doc != null)
 {
  middleDoc = docView.getNextDocument(Doc);
  cal = session.evaluate(config.arc_delete_fomular, Doc);
  if (cal.get(0).toString().equals("1.0"))
  {
   correspond += 1;
  }
  Doc.recycle();
  Doc = null;
  Doc = middleDoc;
  if (correspond >= config.maxArchive) break;
 }
 3.在服务器的 notes.ini 文件中,可以增加一个参数:JavaMaxHeapSize=<字节数>
这个参数的具体数值应该根据服务器的硬件环境和应用程序的实际需要来调整,默认的值应该是64M,可以根据
情况适当往大调一下。例如,“JavaMaxHeapSize=268435456” 将此值设为256MB。
注意:domino只能用4GB的内存,增加或修改此参数后,应重新启动Domino服务器。
 4.对于jar包的调用,最好放在notes.ini文件中,而不是在编写Java Agent的过程中处理,我们可以将
所调用到的jar文件丛中删除,在notes.ini文件中增加JavaUserClasses=pathjarFile,具体可以参考IBM网站
上的这篇文章:
http://www-1.ibm.com/support/docview.wss?uid=swg27002721;
 5.监控JVM内存使用情况。
通过 Runtime.getRuntime().totalMemory() ,Runtime.getRuntime().freeMemory()可以查看JVM内存
使用情况;在notes.ini文件中增加了JavaVerboseGC = 1的参数,每次在执行该代理的时候观察内存泄漏的情况。
 6.升级domino。理论上IBM会对产品的BUG进行修正,但遗憾的是目前无相关补丁资料及稳定版本信息。

参考资料:
 http://blog.csdn.net/wangdeq/archive/2007/10/10/1818246.aspx

 http://blog.csdn.net/xaser/archive/2005/11/15/529684.aspx

 http://www.hur.cn/program/bbs/Lotus/200601/662594.html

 http://topic.csdn.net/t/20040706/15/3150188.html

 http://blog.chinaunix.net/u/11279/showart_60477.html

附:下面是一段利用ODBC连接数据库的程序,自己看看ODBCResultSet类的用法,你就可以读取、写入、修改、
删除数据等等。  
  Uselsx   "*LSXODBC"
  Dim   con   As     ODBCConnection  
  Dim   qry   As     ODBCQuery  
  Set   con   =   New   ODBCConnection  
  con.SilentMode   =   False  
  Print   "正在连接关系数据库..."  
  If   con.ConnectTo("ODBCSource","sa","123")   =   False   Then  //ODBC数据源名、用户名、口令  
  Print   "连接数据库失败!"  
  Exit   Sub  
  End   If  
  Print   "关系数据库连接成功!"  
   
  Dim   result   As   ODBCResultSet  
  Set   qry   =   New   ODBCQuery  
  Set   qry.Connection   =   con  
   
  Set   result   =   New   ODBCResultSet  
  Set   result.Query   =   qry  
  StrSQL   =   "SELECT   *   FROM   drug"        
  qry.SQL   =   StrSQL  
  If   result.Execute   =   False   Then  
  Print   "无法从数据表提取数据!"  
  Exit   Sub  
  End   If  
  con.Disconnect

 

相关文章:

  • AgileEAS.NET敏捷开发平台-升级版-(丑小鸭的蜕变)[已修复下载链接]
  • Failed to load property source from location 'classpath:/applica)
  • do{}while(0)
  • 操作系统复习
  • 精通Camel-2-Camel的生命周期
  • zabbix命令之:zabbix_sender命令
  • 一打开网页,任务栏就消失的问题
  • Oracle 10g11g安装卸载Oracle Label Security
  • 如何在CentOS 5.5上安装Kippo蜜罐(1)
  • MySQL入门:下载
  • Pycharm 快捷键
  • 我那魂牵梦绕的故乡
  • RESTful风格编程
  • 修复fstab文件
  • 广域网协议配置四
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Docker下部署自己的LNMP工作环境
  • es6--symbol
  • ES6语法详解(一)
  • EventListener原理
  • isset在php5.6-和php7.0+的一些差异
  • Java 内存分配及垃圾回收机制初探
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Javascript基础之Array数组API
  • Java-详解HashMap
  • Kibana配置logstash,报表一体化
  • leetcode386. Lexicographical Numbers
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Mybatis初体验
  • Octave 入门
  • Python学习之路16-使用API
  • ReactNative开发常用的三方模块
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SSH 免密登录
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 马上搞懂 GeoJSON
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 少走弯路,给Java 1~5 年程序员的建议
  • 阿里云服务器购买完整流程
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • ###C语言程序设计-----C语言学习(6)#
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (第一天)包装对象、作用域、创建对象
  • (二十三)Flask之高频面试点
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (简单) HDU 2612 Find a way,BFS。
  • (六)vue-router+UI组件库
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (七)c52学习之旅-中断
  • (译) 函数式 JS #1:简介