The HotSpot error that I’m currently having goes away if I don’t run the
SynchronizedMethodToBlockInstrumentationStrategy. Without it, I was able to run a small GUI program. It was veeeery slow, though. Right now, the maximum event list size is relatively small: It can store only 512 events. Once the list is full, the slave initiates a push. I can enlarge that list, but I definitely have to make sure that master pull also works, i.e. that the master can pull at any time as well. That was the original design, but I haven’t checked lately if it still works.
I’ll also have to create a more compact representation. I have no idea how large the footprint of the list is right now, but it might be gigantic. What I really need to store in there is a unique thread ID, a unique object ID if it operates on some object (e.g. claiming its lock), and maybe some additional primitive data (e.g. timeouts). That should only take up a few bytes, and primitive data should suffice. That would allow for a faster data transfer and a more efficient garbage collection.
But before I can improve that, I’ll have to take another look at
Well, master pull doesn’t crash, but it seems to slow things down quite a bit. I’ll have to look into that too.