Ice.MemoryLimitException异常大多是ice接口设置消息体最大字节数太小导致。会引发如下异常:
at java.lang.Thread.run(Thread.java:595)
Caused by: Ice.MemoryLimitException
reason = (null)
at IceInternal.BasicStream.expand(BasicStream.java:1939)
at IceInternal.BasicStream.writeByteSeq(BasicStream.java:649)
解决办法:
Ice.MessageSizeMax is just a safety mechanism, a way to prevent a rogue client or server from sending your program a message that requires a huge memory allocation. If this doesn't matter in your environment, you can disable this feature by setting Ice.MessageSizeMax to a large value.
Ice always allocates marshaling buffers as needed, and the value of Ice.MessageSizeMax doesn't affect how these buffers are allocated (until the MessageSizeMax is reached).
In the Ice Protocol , the size of each message is sent as a Slice int (signed 32-bit integer), so the upper limit of MessageSizeMax is 2^31 or 2GiB.