Recently I set up a Forge server for my family so they can play with distant family members. I thought this is a far safer choice than to have them running around on full-time servers due to age. In doing so I ran into an issue with the server not being able to keep up according to the console and skipping ahead in ticks (quite a large amount) with players having high FPS but blocks, items, and entities not behaving properly. I looked hard for answers where I found out that most of this could be fixed with a start up batch file using Java arguments. This worked like a charm and made the server just; if not more; playable than LAN but in continuing to try to understand the arguments I found out some were conflicting and redundant. This leads to my request for someone to look at my current batch settings to help me streamline them if necessary and make sure that they won't cause issues either.
I finally was able to find the documentation for what all the arguments mean and are in use for Java 8. So I was able to look through my startup.bat and clean it up some. Here is the documentation for Java Tuning.
-XX:+CMSIncrementalMode # considering removing since deprecated in Java 8
-XX:+CMSIncrementalPacing # considering removing since deprecated in Java 8
-XX:ParallelGCThreads= 8 # changed to 4 the number of physical cores after looking at benchmarks/discussions and seeing that there was better performance.
-XX:PermSize=128m # change to -XX:MetaspaceSize=128m since being superseded in Java 8.
-XX:+UseAdaptiveGCBoundary # this one I am up in the air about and could use input on. I have found it can help but it divides evenly between low gen and old gen during gc which isn't always optimal in that it can drive the boundary leading to performance regression. I don't claim to understand these things is why I ask what the consensus is.
-XX:+CMSParallelRemarkEnabled # up in the air with this one since in tuning docs for 1.4.2 and 1.5 it suggests -XX:-CMSParallelRemarkEnabled and I can't find anything more recent and it isn't in the white pages since 1.6. Does this mean it was removed?
I expected some Java pros to jump in and help out but I guess the forums aren't what they use to be. I'll update in case anyone can use the information themselves. While experimenting I realized the other wrapper I was using was cancelling out some of my arguments by using -client and such. I have since switched to BukkitGUI2 which I am growing to love. It is simpler in some ways but lacks some of the features the other has. If someone has little to no knowledge of network and such the other is a much better choice for a quick home server setup where LAN just doesn't cut it.
After some trial and error I have settled with the following for server startup. I removed deprecated arguments, tweaked some, and removed those that the BukkitGUI pointed out. I seem to be doing really well with Java 8 without the slow creeping up of memory consumption I had with the other setups. I am experiencing no lag and all the block,item, and entity errors are gone. Those server tick can't keep up stopped as well. Hope this helps someone else and I'm still open to suggestions or if anyone sees something wrong.