【发布时间】:2009-01-28 13:43:02
【问题描述】:
我正在开发一个基于 comp 的应用程序。 在这个应用程序中,有 n 个容器通过它们相互提供的 RMI 服务相互通信。 在某些情况下,连接到我的容器的一个 rmi 线程由于内存不足错误而失去连接,但连接到我的容器的所有其他 RMI 线程都工作正常。
错误的堆栈在这里:
Exception dispatching call to [655d565c:11f1d5dbae2:-7ffb, -3259564578052694518] in thread "RMI TCP Connection(21)-132.186.96.179" at Wed Jan 28 18:50:37 GMT+05:30 2009:
java.lang.OutOfMemoryError: Java heap space
at java.lang.reflect.Array.newArray(Native Method)
at java.lang.reflect.Array.newInstance(Unknown Source)
at java.io.ObjectInputStream.readArray(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at sun.rmi.server.UnicastRef.unmarshalValue(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
要查看此异常,我必须激活 RMI 特定日志记录。出现此问题是因为此终止线程的每个 RMI 调用都会将一些数据添加到我的容器的堆中。 并且在某些时候它的大小超过了。
我的问题是,如果我的容器的堆大小内存不足,为什么其他线程正在工作? 如果您有任何想法,请告诉我。
【问题讨论】:
-
这个错误是由 RMI 专门捕获的,并且具体 不 会导致 RMI 线程终止。看看别处。
标签: multithreading rmi