zoukankan      html  css  js  c++  java
  • JVM 调优

    -Xms    -Xmx        配置一样,一般情况为最大内存的80%

    -XX:NewSize          新生代初始大小    -XX:MaxNewSize   新生代最大大小  一般情况为整个堆1/3比较合适

    -Xmn         新生代内存大小 一般配合-XX:SurvivorRatio使用, 和

    -XX:NewRatio=n         设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4

    -XX:SurvivorRatio=n  年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5

     1)新生代设置过小    GC次数非常频繁,增大系统消耗;二是导致大对象直接进入旧生代,占据了旧生代剩余空间,诱发Full GC
    
     2)新生代设置过大   会导致旧生代过小(堆总量一定),从而诱发Full GC;二是新生代GC耗时大幅度增加

     -XX:PermSize -XX:MaxPermSize=n  设置持久代大小(JDK1.8舍弃, 使用元空间)

     -XX:MetaspaceSize -XX:MaxMetaspaceSize 设置元空间

    垃圾收集器

     https://blog.csdn.net/wfh6732/article/details/57422967?utm_source=itdadao&utm_medium=referral

    -XX:MetaspaceSize=8m -XX:MaxMetaspaceSize=80m

     1G内存 常用配置JDK1.8

     并发收集器,以响应时间优先

    JAVA_OPTS="-server -Xms768m -Xmx768m -Xmn125m -XX:SurvivorRatio=8 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Xss128K -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:+UseFastAccessorMethods
    -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0"

      并行收集器, 以吞吐量优先, 建议用此方式

    JAVA_OPTS="-server -Xms768m -Xmx768m -Xmn125m -XX:SurvivorRatio=8 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Xss128K 
    -XX:+DisableExplicitGC -XX:+UseParallelGC -XX:ParallelGCThreads=1 -XX:MaxGCPauseMillis=100 -XX:+UseParallelOldGC
    -XX:+UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=/tmp/dump.log"

      -XX:+DisableExplicitGC  禁用System.gc(),  如果应用中使用了java nio中的direct memory,那么使用-XX:+DisableExplicitGC一定要小心,存在潜在的内存泄露风险

      -XX:+UseParallelGC 

      -XX:MaxGCPauseMillis=100  设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。

      -XX:ParallelGCThreads=1    配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

      可通过  cat /proc/cpuinfo| grep "processor"| wc -l  查看逻辑CPU个数,

      -XX:+UseParallelOldGC         配置年老代垃圾收集方式为并行收集

      -XX:+UseAdaptiveSizePolicy   设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使      用并行收集器时,一直打开

      -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=/tmp/dump.log  设置dump文件

    G1收集器

    Windows 亲测, 本人本地用的是jdk1.7, 打开JConsole控制台

     JDK1.7   1.4G 内存配置

    JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xmn125m -XX:SurvivorRatio=8 -XX:PermSize=170m -XX:MaxPermSize=340m -Xss128K -XX:+DisableExplicitGC -XX:+UseParallelGC -XX:ParallelGCThreads=1 -XX:MaxGCPauseMillis=100 -XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=/tmp/dump.log"

    参考https://www.cnblogs.com/zhangfengshi/p/11343102.html

    -server -Xms2G -Xmx2G -Xmn512m
    -XX:SurvivorRatio=6 -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Xss256K -XX:-XX:+DisableExplicitGC -XX:+UseParallelGC -XX:ParallelGCThreads=2 -XX:MaxGCPauseMillis=100 -XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.log

  • 相关阅读:
    算法设计--从后向前处理
    野指针的危害究竟在哪里?
    printf参数的问题
    C++运算符详解问题详解
    java Clone 的心得记录
    拜占庭将军问题
    Java中的private protected public和default的区别
    Mybatis 学习笔记1 不整合Spring的方式使用mybatis
    Mybatis 使用maven插件mybatis-generator自动生成entities和SQL和mapper
    Mybatis 复习 Mybatis 配置 Mybatis项目结构
  • 原文地址:https://www.cnblogs.com/eason-d/p/9264330.html
Copyright © 2011-2022 走看看