3 ms·
> That's not the RTSJ solution. RTSJ uses arenas, which are great if you have regular allocation/deallocation cycles, like, say, a frame in a game. So how do I
by kuschku 9y ago
> That's not the RTSJ solution. RTSJ uses arenas, which are great if you have regular allocation/deallocation cycles, like, say, a frame in a game.
So how do I get a user’s Oracle JRE installation to use arenas? The only realistic scenario is to preallocate and reuse.
- pron 9y agoYou don't. You use an RTSJ JVM.
- kuschku 9y agoThat’s not an option, that was the whole point of the discussion.
- pron 9y agoIf changing the JVM spec is an option, then surely so is using an existing spec. IBM has an RTSJ JVM[1], which, I believe, is based on J9. [1]: https://www.ibm.com/support/knowledgecenter/en/SSSTCZ_3.0.0/com.ibm.wrt.rtlinux.doc.30/homepage/plugin-homepage-rt.html https://www.ibm.com/support/knowledgecenter/en/SSSTCZ_3.0.0/...
- kuschku 9y agoChanging the JVM spec has a chance at being applied in future normal JVMs. Using an entirely separate solution has not.
- pron 9y agoIt's not an entirely separate solution, but a Java standard. In any event, it's probably overkill if all you need are acceptable pause-times for games (RTSJ is for hard-realtime, safety-critical systems, where even 2us jitter may kill someone). There are "pauseless" GCs for the JVM (with 1-10ms max pause, depending on the GC) without hard realtime guarantees. We just need more free implementations.
- mstoodle 9y agoEclipse OpenJ9's -Xgcpolicy:metronome is one of those GCs. Depending on how you well you configure your operating system, it defaults to 3ms pauses along with an application utilization contract.