Actually I have developed a Python program for processing Fide's XML players list, so I have some experience with XML processing in Python:
The problem with Python for me is that though it has an official GUI interface Tk, this is very weak compared to JavaFX. Also Python being an interpreted language is not that fast. So finally I abandoned Python and I switched to Scala for high level / GUI tasks and Go for tasks that require a fast native executable.
Suppose you want you test your engine, however not interested in games between third party engines. From now on you can toggle the enabled status of scheduled games. This will be remembered as a template, so if you recreate the same schedule next time, the same games will be disabled.
This is a nice feature, just like a gauntlet!!
I am running a tournament at tc 40/2400 with 4 engines but actually disable other matches except that of Bigbang. After 8 hrs here is the memory consumed by running scalachessgui.
javaw.exe, java (TM) Platform SE binary, 3.35 GB
It started at around 1.2 GB. Could there be a memory leak?
The engine window are not displayed anymore but they are still running and the main board are still updating the engine moves. Memory use is around 60%
I have also seen uci engines stockfish atomic and stockfishai that are still loaded even though they are not in use anymore as can be seen in windows task manager.
My system is i7 desktop, quad core, 8 threads (HT=on), 12 GB Memory, Win7 64bit.
Look, the JVM ( Java Virtual Machine ) is supposed to do garbage collection automatically. In such a complicated program as this one to detect a memory leak is like looking for a needle in the haystack. This is much more diffictult than fixing a conrete bug when something palpable is not working.
The scheduler's state is persistent across sessions. You can stop the scheduler, abort the game and exit the program ( this game will not be recorded and will restart upon the next start of the scheduler from the beginning ), restart the program and restart the scheduler. If you cam do this, say once every 2 hours, you will be fine. If you can't do this, if you want a framework that can run all day long without supervision in absolutely foolproof way, like the control system of an atomic power plant, then you have to look for a professional solution. Mine is only an amateur open source program.
There are techniques for identifying memory leaks but it's a PITA and even for commercial software memory leaks aren't always fixed.
I just could not believe that it can reach this high 3+ GB memory use (and still increasing) after 8 hrs of running, with only 4 engines and 5 starting positions in the scheduler. I am giving you an info to see if you could do something about it or perhaps if the scheduler is causing it you can improve the scheduler.
I am doing a gauntlet at 40 moves / 40 minutes, other pairings are disabled, only the following is on actual schedule. This is also a way of testing scalachessgui and engines on long time control, to see how stable is this setup with regards to my system.
Bigbang vs atomkraft - 10 games, from 5 positions
Bigbang vs stockfishai - 10 games, from 5 positions
Bigbang vs stockfishatomic - 10 games, from 5 positions
If the scheduler causes this high memory use, I can probably schedule a direct engine vs engine match, instead of using 4 engines at the same time and disabled other pairings.
Yesterday I stop the scheduler and abort the running match then quit the scalachessgui, then restart the pc. Now when I open scalachessgui, and load stockfishai and press open console, the engine console will not display properly (you cannot see the full window, setting tab, and other tabs), same with Bigbang. But it would work if I load stockfish atomic and atomkraft both engine windows are displayed properly.
To know for certain if there's a memory leak (although we suspect it), reduce scalachessgui's memory limit and observe whether OutOfMemoryErrors occur.
I don't know how to reduce scalachessgui's memory limit, but I can change the java memory max limit to 512M by the runtime parameter.
Program now displays heap size in every 5 seconds next to the fen under the board: