调试ICE程序时通常会出现内存溢出的错误,在Ice的connectionI类中有关于directbuffer的启用以及关于outgoing构造方式的调用,这对上述的两个错误有直接影响。
首先不能设置ice的client端中的连接个数过多,过多会导致太大的开销没有必要。
其次Ice.CacheMessageBuffers的值会影响outgoing的构造方式,等于0时是每次连接使用new的方式;大于0时会使用一个缓存池并以next链表的方式不断链接,这里有极大开销,可以改成等于0,再辅助jvm的垃圾回收参数可以快速回收垃圾。同时大于1时会启用direct buffer,小于1时启用heapbytebuffer。
在Java平台上,这个参数有0,1,2三个值可以设置,建议查查文档他们分别的含义,我就说这么多吧。