jar包启动时指定对应参数,比如我的工程启动命令就是这样的
启动命令,打码部分为工程名
常见参数如下
1.-Xms:初始堆大小。只要启动,就占用的堆大小。
2.-Xmx:最大堆大小。java.lang.OutOfMemoryError:Java heap这个错误可以通过配置-Xms和-Xmx参数来设置。
3.-Xss:栈大小分配。栈是每个线程私有的区域,通常只有几百K大小,决定了函数调用的深度,而局部变量、参数都分配到栈上。
当出现大量局部变量,递归时,会发生栈空间OOM(java.lang.StackOverflowError)之类的错误。
4.XX:NewSize:设置新生代大小的绝对值。
5.-XX:NewRatio:设置年轻代和年老代的比值。比如设置为3,则新生代:老年代=1:3,新生代占总heap的1/4。
6.-XX:MaxPermSize:设置持久代大小。
java.lang.OutOfMemoryError:PermGenspace这个OOM错误需要合理调大PermSize和MaxPermSize大小。
7.-XX:SurvivorRatio:年轻代中Eden区与两个Survivor区的比值。注意,Survivor区有form和to两个。比如设置为8时,那么eden:form:to=8:1:1。
8.-XX:HeapDumpOnOutOfMemoryError:发生OOM时转储堆到文件,这是一个非常好的诊断方法。
9.-XX:HeapDumpPath:导出堆的转储文件路径。
10.-XX:OnOutOfMemoryError:OOM时,执行一个脚本,比如发送邮件报警,重启程序。后面跟着一个脚本的路径。
-Xms256m:初始化堆大小为 256m;
-Xmx2g:堆最大内存为 2g;
-Xmn50m:新生代的大小50m;
-XX:+PrintGCDetails 打印 gc 详细信息
-XX:+HeapDumpOnOutOfMemoryError 在发生OutOfMemoryError错误时,来dump堆快照
-XX:NewRatio=4 设置年轻的和老年代的内存比例为 1:4;
-XX:SurvivorRatio=8 设置新生代 Eden 和 Survivor 比例为 8:2;
//参数上写的,都是新生代的垃圾回收器
-XX:+UseSerialGC 新生代和老年代都用串行收集器 Serial + Serial Old
-XX:+UseParNewGC 指定使用 ParNew + Serial Old 垃圾回收器组合;
-XX:+UseParallelGC 新生代使用Parallel Scavenge,老年代使用Serial Oldujiuye
//参数上写的,都是老年代的垃圾回收器
-XX:+UseParallelOldGC:新生代ParallelScavenge + 老年代ParallelOld组合;
-XX:+UseConcMarkSweepGC:新生代使用ParNew,老年代的用CMS;
-XX:NewSize;新生代最小值;
-XX:MaxNewSize:新生代最大值
-XX:MetaspaceSize 元空间初始化大小
-XX:MaxMetaspaceSize 元空间最大值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)