这是一段jvm 参数
-server -Xms8192m -Xmx8192m -Xmn3072m -XX:PermSize=256m -Xss256k -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:-OmitStackTraceInFastThrow -XX:HeapDumpPath=/app/springMy
-Xms:设置JVM初始内存。(此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。)
-Xmx:设置JVM最大可用内存。
-Xmn:设置年轻代大小。(Xms *3/8)
整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。
持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-XX:PermSize设置非堆内存初始值
-Xss: 设置每个线程的堆栈大小。
设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内 存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseConcMarkSweepGC 打开并发收集器
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection 使用并发收集器时,开启对年老代的压缩
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
XX:HeapDumpPath=/app/springMy
-XX:-OmitStackTraceInFastThrow 省略异常栈信息从而快速抛出
JVM对一些特定的异常类型做了Fast Throw优化,如果检测到在代码里某个位置连续多次抛出同一类型异常的话,C2会决定用Fast Throw方式来抛出异常,而异常Trace即详细的异常栈信息会被清空,这种异常抛出速度非常快,因为不需要在堆里分配内存,也不需要构造完整的异常栈信息
参考:https://www.jianshu.com/p/cc1bd35466cb