64位jre
java -server -Xincgc -Xmx最大内存M -Xms最小内存M -Xss512K -XX:+AggressiveOpts -XX:+UseCompressedOops -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=2 -XX:CMSInitiatingOccupancyFraction=70 -XX:-DisableExplicitGC -XX:TargetSurvivorRatio=90 -jar 服务端核心.jar

32位jre
java -Xincgc -Xmx最大内存G -Xms最小内存M -Xss512K -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=2 -XX:CMSInitiatingOccupancyFraction=70 -XX:-DisableExplicitGC -XX:TargetSurvivorRatio=90 -jar 服务端核心.jar

-server
这个是服务器运行模式,64位系统是默认开启的,32位系统是关闭的
我们建议你开启此项

-Xincgc

启用Java增量式垃圾回收器。
(没什么需要特别解释的就不会过多说明)

-Xms
初始堆大小
(我一般会写成32M)
建议是物理内存的1/64(<1GB)

-Xmx
最大堆大小
建议是物理内存的1/4(<1GB)
不过既然是开mc服务器,那么内存肯定是全用上
windows服务器建议在总内存上减去1GB,linux无所谓了
群组服酌情决定把,另外,如果是Bungee端,不推荐超过256M(人特别多除外)

-Xss
每个线程的堆栈大小
JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K,
既然增多肯定是有原因的,但是经过大量实践,
对于mc无论是客户端还是服务端 512K足矣

-XX:+AggressiveOpts
加快编译

-XX:+UseCompressedOops
通常64位JVM消耗的内存会比32位的大1.5倍,这是因为对象指针在64位架构下,长度会翻倍(更宽的寻址)。
这个可以压缩指针,起到节约内存占用的新参数。
(32位几乎不受此参数影响)
(最低需要jdk1.6.0_14)

-XX:+UseCMSCompactAtFullCollection
使用并发收集器时,开启对旧数据的压缩.

-XX:+UseFastAccessorMethods
优化原始类型的getter方法性能

-XX:ParallelGCThreads=4
设置旧数据的线程回收数
我在这里讲解并不针对任何 帖子 或 个人
有的人说是服务器的使用的线程,实际不然,这只是对旧数据的回收线程数
我们推荐设置成cpu总核心数的一半或更低

-XX:+UseConcMarkSweepGC

使用CMS内存收集(旧数据回收器)

-XX:CMSFullGCsBeforeCompaction=2
CMS收集多少次后进行内存压缩

-XX:CMSInitiatingOccupancyFraction=70
这个有专门的计算公式
数值应当 小于或等于((Xmx-Xmn)-(Xmn-Xmn/(SurvivorRatior+2)))/(Xmx-Xmn)*100
但是我们并没有对xmn进行设置,所以使用通用参数 70%

-XX:-DisableExplicitGC
禁止代码中显示调用GC

-XX:TargetSurvivorRatio=90
一个计算期望存活大小Desired survivor size的参数.
这个作用就是降低GC被触发的门槛

https://www.mcbbs.net/thread-839828-1-1.html
(出处: Minecraft(我的世界)中文论坛)