环境:DOMINO6.02主机:as400-820
我用JAVA写了一个代理,编译和运行均正常。但此代理运行几百次后,就会报错:java.lang.OutOfMemoryError,估计是内存溢出错误。我的程序中已对内存做了清理,代码如下:
sysdoc.recycle();
sysview.recycle();
view.recycle();
doc.recycle();
db.recycle();
System.gc();
试问各位高手,这是什么原因呢?是DOMINO的JAVA虚拟机问题还是DOMINO的设置问题呢?
---------------------------------------------------------------
呵呵,去年我就问过这个问题,我的一个java代理,循环运行几千次,就出现这个错误,到现在还没有解决.个人认为是domino的jvm问题.
---------------------------------------------------------------
内存泄漏阿java虚拟机的垃圾回收启动的太慢,建议你把java虚拟机的初始分配存
开大点如果你内存足够多应该没有问题注意domino只能用4gb的内存呵呵
就此问题我已请教了清华紫光的as400工程师,他说可能是DOMINO的JVM有问题,建议我去打补丁,唉,可是补丁从哪找呀....
另问一下bug0303(补丁)兄,你这个问题是在PC上还是在400上遇到的?
经咨询,得到以下缓解方法:
在服务器的notes.ini文件中,可以增加一个参数:
JavaMaxHeapSize=<字节数>
这个参数的具体数值应该根据服务器的硬件环境和应用程序的实际需要来调整,默认的值应该是64M,可以根据情况适当往大调一下。例如,“JavaMaxHeapSize=268435456”将此值设为256MB。
注意增加或修改此参数后,应重新启动Domino服务器。
如再无更好的方法,本贴将结贴。
经测试,增加JVM缓存不能解决此问题,IBM工程师也承认这是DOMINO的JVM有问题。
介此,我已用LS将这段JAVA改写,实现了同样的功能。