Optimize JAVA for MineCraft in a EXTREME way :P -- NEED FEEDBACK, THX !! [- I AM BACK -!]

Discussion in 'Bukkit Discussion' started by Therawroy, Jul 12, 2011.

Thread Status:
Not open for further replies.
  1. Offline


    there is a key difference between JRE and the JDK which includes also the JRE and more .... to start java native or even use shared memory, you need the JDK and not onle the files which starts the minecraft server. And then there is the 60MB difference in size and when you use the java -update and set JDK1.7.0 to auto mode instead of manual mode and wanna use the same java version for thread monitoring or even other programms which also need a java compiler ....
    and why do you still think you are right in your opinion ?? because you are so ignorant to check anything beside OpenJDK, which was the last java 1.7.0 release of them all. Oracle was first with the build 147 and they made the difference between JRE and JDK .... OpenJDK is the last accepted build 147 which everybody accepted. And they call their released version "OpenJDK (20MB)" .... but it contains only the JRE - Elements with the OPTION to add things in case you need them. The REAL JDK Version with javac .... is about 80MB in filesize. Should i tell you more ?
    And why are you so mad about me anyways ?? World of Warcraft dont need java ;) So its not your problem

    And for all the JAVA Fans .... want the missing stuff of the JDK ?? Then put this script "install_java7.alternatives" in "/usr/lib/jvm"

    set -e

    jdk_tools='appletviewer apt extcheck idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc'
    jre_tools='javaws policytool'

    for i in $jdk_tools; do
    unset slave1 slave2 || true
    if [ -e $mandir/man1/$i.$srcext ]; then
    slave1="--slave /usr/share/man/man1/$i.$dstext $i.$dstext $mandir/man1/$i.$srcext"
    update-alternatives --install /usr/bin/$i $i $basediralias/bin/$i $priority $slave1 $slave2

    for i in $jre_tools; do
    unset slave1 slave2 || true
    if [ -e $mandir/man1/$i.$srcext ]; then
    slave1="--slave /usr/share/man/man1/$i.$dstext $i.$dstext $mandir/man1/$i.$srcext"
    update-alternatives --install /usr/bin/$i $i $basediralias/jre/bin/$i $priority $slave1 $slave2

    When you start this script you get following missing stuff for a real JDK:hl java /usr/lib/jvm/jdk1.7.0/jre/bin/java

    hl keytool /usr/lib/jvm/jdk1.7.0/jre/bin/keytool
    hl pack200 /usr/lib/jvm/jdk1.7.0/jre/bin/pack200
    hl rmid /usr/lib/jvm/jdk1.7.0/jre/bin/rmid
    hl rmiregistry /usr/lib/jvm/jdk1.7.0/jre/bin/rmiregistry
    hl unpack200 /usr/lib/jvm/jdk1.7.0/jre/bin/unpack200
    hl orbd /usr/lib/jvm/jdk1.7.0/jre/bin/orbd
    hl servertool /usr/lib/jvm/jdk1.7.0/jre/bin/servertool
    hl tnameserv /usr/lib/jvm/jdk1.7.0/jre/bin/tnameserv
    hl jexec /usr/lib/jvm/jdk1.7.0/jre/lib/jexec
    jre javaws /usr/lib/jvm/jdk1.7.0/jre/bin/javaws
    jre policytool /usr/lib/jvm/jdk1.7.0/jre/bin/policytool
    jdk appletviewer /usr/lib/jvm/jdk1.7.0/bin/appletviewer
    jdk apt /usr/lib/jvm/jdk1.7.0/bin/apt
    jdk extcheck /usr/lib/jvm/jdk1.7.0/bin/extcheck
    jdk idlj /usr/lib/jvm/jdk1.7.0/bin/idlj
    jdk jar /usr/lib/jvm/jdk1.7.0/bin/jar
    jdk jarsigner /usr/lib/jvm/jdk1.7.0/bin/jarsigner
    jdk javac /usr/lib/jvm/jdk1.7.0/bin/javac
    jdk javadoc /usr/lib/jvm/jdk1.7.0/bin/javadoc
    jdk javah /usr/lib/jvm/jdk1.7.0/bin/javah
    jdk javap /usr/lib/jvm/jdk1.7.0/bin/javap
    jdk jconsole /usr/lib/jvm/jdk1.7.0/bin/jconsole
    jdk jdb /usr/lib/jvm/jdk1.7.0/bin/jdb
    jdk jhat /usr/lib/jvm/jdk1.7.0/bin/jhat
    jdk jinfo /usr/lib/jvm/jdk1.7.0/bin/jinfo
    jdk jmap /usr/lib/jvm/jdk1.7.0/bin/jmap
    jdk jps /usr/lib/jvm/jdk1.7.0/bin/jps
    jdk jrunscript /usr/lib/jvm/jdk1.7.0/bin/jrunscript
    jdk jsadebugd /usr/lib/jvm/jdk1.7.0/bin/jsadebugd
    jdk jstack /usr/lib/jvm/jdk1.7.0/bin/jstack
    jdk jstat /usr/lib/jvm/jdk1.7.0/bin/jstat
    jdk jstatd /usr/lib/jvm/jdk1.7.0/bin/jstatd
    jdk native2ascii /usr/lib/jvm/jdk1.7.0/bin/native2ascii
    jdk rmic /usr/lib/jvm/jdk1.7.0/bin/rmic
    jdk schemagen /usr/lib/jvm/jdk1.7.0/bin/schemagen
    jdk serialver /usr/lib/jvm/jdk1.7.0/bin/serialver
    jdk wsgen /usr/lib/jvm/jdk1.7.0/bin/wsgen
    jdk wsimport /usr/lib/jvm/jdk1.7.0/bin/wsimport
    jdk xjc /usr/lib/jvm/jdk1.7.0/bin/xjc

    - Questions ?? :p Yeah i thought so ....

    And if you dont use my procedure like in the command line, you get a JAVA6 and JAVA7 Mix and this is the worst case ... and now check this link http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html#javasejdk and see for yourself how wrong and laughable you are ....

    See the difference to Download ?? JRE and JDK and both Java 1.7 ..... and there is also a Java SDK ..... but that is too much for you ;)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 17, 2016
  2. Offline


    There is no way this guy is not a troll. ^^^^^ 99% of this is bs. This lame is copying stuff out of a book, and a poor one at that. All of those max perm sizes, and tenuring thresholds, are dependent on heap size.

    You have a little junk server, with 2 ppl on it and you want to talk about a 40 arg launch line?
    NOBODY has come into this thread and agreed with you, and there are smart credentialed people hanging around this forum.

    One of the head bukkit devs says you are full of shit.
  3. Offline


    This does nothing. I have a server with 3 2.5GB maps running on 4GB ram and a basic garbage collector running 42 plugins. With my average of 25ish players online I barely use 600mb.

    Server performance is is based on what you run and how you run it. If you have a server with 2gb ram or more get a 64-bit OS. That alone is a huge performance boost. With Java 1.7 jdk or jre YOU DO NOT want a huge message of a command line. Java 1.7 is extremely optimized and there is no reason you need to change anything away form a basic command line.
  4. Offline


    thats not from a book .... its the actual configuration i use for utilizing the full potential of java. And no one besides you said such stuff... they critized me or whatever .... but there is one big thing which cant be denied from anyone because you can see and feel the difference .... so its like a fact of life and the humans mostly try to change it for their use.
    I said from the first beginnings on a VirtualServer ... "if the performance wont get better i quit the game" and after this long time, i am happy to say ... now i can realize the big world which will also perform. And look in the bulletin boards ... everyone is complaining and they mostly have more RAM , a much smaller world, less plugins and mostly no modLoader and stuff included ..... and it wasnt playable for this or that reason ... but not anymore .... and thats a fact (of life) :p

    When the Server opens for Public to compare the difference, you get first person access ;) and atm i render a html.file of the world to show you what i mean ;)

    Also i put all the commands in a "minestart.sh" file, so its also a small writing for start :p
  5. Offline


    pfft. The best thing you can do is set -Xmn to 3/8th of the heap. for 99% of the servers out there that will confine most of the unloaded stuff and dead pointers and whatnot, to the young generation where ParNewgc is most efficient. All that other junk is useless for an application like bukkit. Unless you NEVER plan to change Bukkit builds, plugins, heap sizes etc. That is the problem with your launch line and indeed with java itself. It is only tailored for the exact instance at hand.
  6. Offline


    believing is the key word ;)
  7. Offline


    I got a question. My server host gave me OpenJDK, but is it better if I use Java 7? JDK version ofc ;)
  8. Offline


    Why dont you put your commandline into a code tag?
    Like this:
    ionice -c1 -n0 nice -n -10 /usr/lib/jvm/jdk1.7.0/bin/java -Djava.library.path=/usr/lib/jvm/jdk1.7.0/lib/amd64 -d64 -server -XX:+UseG1GC -DJINTEGRA_NATIVE_MODE -DJINTEGRA_COINIT_VALUE=0 -Dsun.io.useCanonCaches=false -Djline.terminal=jline.UnsupportedTerminal  -XX:ThreadPriorityPolicy=42 -XX:CompileThreshold=1500 -XX:+TieredCompilation -XX:ParallelGCThreads=4 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -XX:+UnlockExperimentalVMOptions -XX:+UseAdaptiveGCBoundary -XX:PermSize=64M -XX:MaxPermSize=256M  -XX:+UseGCOverheadLimit -XX:+UseBiasedLocking -Xnoclassgc -Xverify:none -XX:UseSSE=3 -XX:+UseThreadPriorities -Djava.net.preferIPv4Stack=true -XX:+UseLargePages -XX:+UseStringCache -XX:+OptimizeStringConcat -XX:+UseFastAccessorMethods -Xrs -XX:+UseCompressedOops -XX:+AggressiveOpts -jar craftbukkit-0.0.1-SNAPSHOT.jar nogui
    edit: Oky now I know why :D
  9. Offline


    use the OpenJDK7 ... its the base for all future developments.

    And thx for the CodeView ... didnt see it first =)
Thread Status:
Not open for further replies.

Share This Page