Clojure and Overtone Driving Minecraft
blog.josephwilk.net
blog.josephwilk.net
Really? I mean really?
How the JVM handled class metadata changed in Java 8; the MaxPermGen argument is ignored on that version (http://java.dzone.com/articles/java-8-permgen-metaspace).
P.S. According to that second link, interned strings haven't been stored in the permanent generation since Java 7.
Reasons for running with -XX:MaxPermSize=1G that I can imagine:
* you run Java 7 (which goes EOL in March)
* and one of those:
* your code base is twice as large as Eclipse and JBoss combined
* you have a PermGen leak
* you have no idea what you're doingSpigot warning: ``` Warning, your max perm gen size is not set or less than 128mb. It is recommended you restart Java with the following argument: -XX:MaxPermSize=128M Please see http://www.spigotmc.org/wiki/changing-permgen-size/ for more details and more in-depth instructions. ```
-d64 (force a 64-bit data model, although usually this isn't necessary)
-server (use the server-optimized JVM instead of the desktop-optimized one, again, may not be necessary)
-Xmx1G (start with this heap memory limit and increase if necessary)
-XX:+UseConcMarkSweepGC (for multithreaded GC)
-XX:+CMSIncrementalMode (only use on computers that support 1 or 2 hardware threads)
-XX:+AggressiveOpts (enables additional JVM optimizations)
There's a ton of bad advice out there when it comes to JVM configuration and Minecraft. The above comes from my understanding of this somewhat dated Java GC tuning guide (http://www.oracle.com/technetwork/java/gc-tuning-6-140523.ht...) and sk89q's excellent Minecraft server tuning guide (http://www.sk89q.com/2013/03/improving-your-minecraft-server...), coupled with small-scale server profiling on my part.
-XX:+AggressiveOpts
is a noop these days.It isn't strictly necessary, but if you're trying to squeeze every possible drop of performance out of your Minecraft server, the experimental optimizations aren't a bad thing to enable. I will admit to doing only informal performance testing when it comes to the AggressiveOpts flag.