I am a newbie for Java so please bear with my java terminologies. I am working on a project, where I want to do RMI calls on remote objects from real-time threads. Underlying real-time OS is a modified linux kernel (Chronos linux) to support the real-time scheduling of tasks. On top of that I am using IBM Websphere real-time jvm.
Under the implementation, I am making RMI calls to remote object inside a real-time thread. This real-time thread does not allow to spawn another thread (since the spawned thread behavior will be undefined if its deadline and period etc. is not set). When I make an RMI lookup call, JVM crashes and leaves the core dump with error message as "outofMemory". And I see that JIT code memory is completely exhausted.
>> subObject1 = (IObject)LocateRegistry.getRegistry(server1.inetAddress.getHostAddress(), server1.port).lookup(Object1);
I narrowed down the scenario to be happening for only remote objects. If the lookup is for an object which is hosted by the same node, it works without any problem. Also the issue come only for lookup call (not for getRegistry()), since I looked at the trace.
Further when I run the same implementation from non-real-time thread (normal thread), it runs just fine. Please help me in locating the real cause? Is it something to do with RMI registry lookup, where it needs some work which is blocked by rela-time OS?
Thanks for your help.