服务器8g内存,一个常用start.jar的web程序为例,预留2g内存给操作系统

java -server -Xms6g -Xmx6g -xx:NewSize=2g -xx:+UseParNewGC -xx:+UseConcMarkSweepGC -xx:+HeapDumpOnOutOfMemoryError -xx:HeapDumpPath=dump.log -jar start.jar

-Xms6g -> 堆最小内存
-Xmx6g -> 堆最大内存
一般将两个参数设置成一样,避免gc垃圾收集之后重新分配内存影响性能问题。
-xx:NewSize=2g -> 新生代大小设置成堆内存大小的1/3
-xx:+UseParNewGC -> 新生代MinorGC使用多线程
-xx:+UseConcMarkSweepGC -> 老年代MajorGC使用并行
-xx:+HeapDumpOnOutOfMemoryError -> 内存溢出OOM时将堆栈信息保存到文件
-xx:HeapDumpPath=dump.log -> 内存溢出时文件路径
其他未设定参数按照jvm默认运行就好。
注意:
-xx:MaxPermSize=128m -> 若项目启动发生OOM异常,则考虑是否永久代默认设置128M内存不够,适当调高此项设置