JVM调优

这是一段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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [转] 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表...
    蛋蛋迪幽桑阅读 276评论 0 0
  • 1.一些概念 1.1.数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始...
    落落落落大大方方阅读 4,581评论 4 86
  • 1 调优层次 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。架构调优和代...
    MiniSoulBigBang阅读 5,159评论 1 15
  • 调优设置具体解析 一.堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-b...
    魏宁_david阅读 365评论 0 0
  • 前言 开发了大半年的数据中台系统,近期在测试环境上线压测,监控JVM时发现GC频繁,开启GC日志后发现隔几秒就要做...
    南风过境jz阅读 495评论 0 0