Hello Vassal Engine developers,
On my machine the ModuleManager starts with -Xmx2G by default, then starts a new JVM for the Player with -Xmx512M. This is surely a big overhead, many if not most classes get loaded by both JVMs, the 2G heap of the first JVM should be way too much for just the ModuleManager and should have enough heap space left to load the Player with the map and its contents. The internal runtime optimizations of the JVMs also don't work that well if each JVM has to do its own optimization. And debugging the application is also more difficult, the breakpoints in the Player don't work when the ModuleManager starts the Player in a separate JVM.
Other Java desktop applications all run inside a single JVM, be it Eclipse, Netbeans or IntelliJ, and these applications are more complex and resource-intensive compared to Vassal.
I have dirty-hacked a quick POC where the Player is started in the same JVM, and it seems to work perfectly fine, I can see the map and move all the counters as usual, can load and save savegames, so this idea with running several JVMs seems to not be a technical problem.
So what is the advantage of having the Player or the Editor in their own JVMs?
My other questions are concerning Vassal 4, I have seen some vague plans for a Vassal 4 here on the forum and in the wiki, one that will be rewritten from scratch in C++, some of these plans are already several years old, and there is still not a single line of code written. Forgive me for being a pragmatist, but are these plans still actual? What is the estimated time, when will development start, how many developers will work on it, when can a first release be expected, which GUI framework or engine will Vassal 4 use, what will happen to Vassal 3's Java code in the meanwhile, what will happen with all the modules that already exist and the modules that will be developed for Vassal 3 in the upcoming months/years, and what will happen with Vassal 3 once Vassal 4 is out?