[No000019A]IDEA 设置手册

[No000019A]idea设置手册.rar

IDEA 设置手册

plugin

  1. String Manipulation,字符串转换

  2. MybatisCodeHelperPro

    使用说明

  3. jrebel

    在 jrebel server 处,写上: http://139.199.89.239:1008/88414687-3b91-4286-89ba-2dc813b107ce 如果出现激活过期的情况,请重新生成 guid,替换原来的 guid 即可邮箱随便写,即可激活。

  4. lombok

    Plugin Preferences | Build, Execution, Deployment | Compiler | Annotation Processors

     
     
     
     
     
     
    1
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    2
    <dependency>
    3
     <groupId>org.projectlombok</groupId>
    4
     <artifactId>lombok</artifactId>
    5
     <version>1.18.6</version>
    6
     <scope>provided</scope>
    7
    </dependency>
     
     

    or 不指定 版本号

     
     
     
     
     
     
    1
    <dependency>
    2
     <groupId>org.projectlombok</groupId>
    3
     <artifactId>lombok</artifactId>
    4
     <optional>true</optional>
    5
     <scope>provided</scope>
    6
    </dependency>
     
     

lgnore files and folesrs

.idea;.gitignore;.project;.classpath;.settings;.rebel-remote.xml.bak;.rebel.xml.bak;

代码管控

  1. svn,需要安装 command line tool 组件
  2. maven,部门私服配置见 setting 样例.xml;
  3. 如果使用外部包管理,建议参照 https://www.jianshu.com/p/4d5bb95b56c5 配置;
 
 
 
 
 
 
1
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
2
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
4
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
5
      <mirrors>
6
        <mirror>
7
            <id>alimaven</id>
8
            <name>aliyun maven</name>
9
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
10
            <mirrorOf>central</mirrorOf>
11
        </mirror>
12
      </mirrors>
13
</settings>
 
 

程序框架

  • spring boot
  • mybatis
  • druid
  • mybatis-generator

部署方式

  • 打包部署成 war/tomcat 部署;
  • 版本 9,配置文件改端口
  • Oracle 驱动解压到marven[repostitory]/com/oracle{同 ojdbc7}

useless 32file

  • idea.exe.vmoptions
  • IdeaWin32.dll
  • jumplistbridge.dll
  • runnerw.exe
  • yjpagent.dll
  • breakgen.dll
  • fsnotifier.exe
  • idea.exe

idea 配置调优

  • 修改的原则:根据机器内存情况来判断;
  • 建议 8G 以下或静态页面开发都不要修改;
  • 大型、Java 、Android 项目,且内存大于 8G,建议进行修改

常修改下面 4 个参数

这里只做一个引子,最好的调整方式是根据 jconsole 工具进行观察后个性化调整。

 
 
 
 
 
 
1
-server
2
-Xms512m
3
-Xmx2048m
4
-XX:ReservedCodeCacheSize=512m
5
-XX:+UseConcMarkSweepGC
6
-XX:SoftRefLRUPolicyMSPerMB=80
7
-ea
8
-XX:CICompilerCount=2
9
-Dsun.io.useCanonPrefixCache=false
10
-Djava.net.preferIPv4Stack=true
11
-Djdk.http.auth.tunneling.disabledSchemes=""
12
-XX:+HeapDumpOnOutOfMemoryError
13
-XX:-OmitStackTraceInFastThrow
14
-Djdk.attach.allowAttachSelf
15
-Dkotlinx.coroutines.debug=off
16
-javaagent:jetbrainsCrack.jar
17
18
//-XX:MaxPermSize=350m,16G 内存的机器可尝试设置为-XX:MaxPermSize=500m//无此选项
 
 

设置 JVM 内存设置

  1. 设置 JVM 内存的四个参数:

    • -Xmx

    Java Heap 最大值,默认值为物理内存的 1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

    • -Xms

    ava Heap 初始值,Server 端 JVM 最好将-Xms 和-Xmx 设为相同值,开发测试机 JVM 可以保留默认值;

    • -Xmn

    Java Heap Young 区大小,不熟悉最好保留默认值;

    • -Xss

    每个线程的 Stack 大小,不熟悉最好保留默认值;

  2. 设置 JVM 内存分配:

    1. 当在命令提示符下启动并使用 JVM 时(只对当前运行的类 Test 生效):

    java-Xmx128m-Xms64m -Xmn32m -Xss16m Test

    1. 当在服务器环境下(如 Tomcat)启动并使用 JVM 时(对当前服务器环境下所以 Java 程序生效):

      • 设置环境变量:
      1. 变量名:CATALINA_OPTS
      2. 变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m
      3. 打开 Tomcat 根目录下的 bin 文件夹,编辑 catalina.bat,
      4. 将其中的%TALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m

查看设置 JVM 内存信息

 
 
 
 
 
 
1
//最大可用内存,对应-Xmx
2
Runtime.getRuntime().maxMemory();
3
//当前 JVM 空闲内存
4
Runtime.getRuntime().freeMemory();
5
//当前 JVM 占用的内存总数,其值相当于当前 JVM 已使用的内存及 freeMemory() 的总和
6
Runtime.getRuntime().totalMemory();
 
 
  • 关于 maxMemory(),freeMemory() 和 totalMemory():

    1. maxMemory() 为 JVM 的最大可用内存,可通过-Xmx 设置,默认值为物理内存的 1/4,设值不能高于计算机物理内存;
    2. totalMemory() 为当前 JVM 占用的内存总数,其值相当于当前 JVM 已使用的内存及 freeMemory() 的总和,会随着 JVM 使用内存的增加而增加;
    3. freeMemory() 为当前 JVM 空闲内存,因为 JVM 只有在需要内存时才占用物理内存使用,所以 freeMemory() 的值一般情况下都很小,而 JVM 实际可用内存并不等于 freeMemory(),而应该等于 maxMemory()-totalMemory()+freeMemory()。及其设置 JVM 内存分配。 官方文档见:http://docs.sun.com/source/819-0084/pt_tuningjava.html
  • java 启动参数共分为三类;

    1. 标准参数(-),所有的 JVM 实现都必须实现这些参数的功能,而且向后兼容;
    2. 非标准参数(-X),默认 jvm 实现这些参数的功能,但是并不保证所有 jvm 实现都满足,且不保证向后兼容;
    3. 非 Stable 参数(-XX),此类参数各个 jvm 实现会有所不同,将来可能会随时取消,需要慎重使用;
  • 标准参数中比较有用的:

    • verbose -verbose:class

      输出 jvm 载入类的相关信息,当 jvm 报告说找不到类或者类冲突时可此进行诊断。

    • -verbose:gc

      输出每次 GC 的相关情况。

    • -verbose:jni

      输出 native 方法调用的相关情况,一般用于诊断 jni 调用错误信息。

  • 非标准参数又称为扩展参数,一般用到最多的是:

    • -Xms512m

      设置 JVM 促使内存为 512m。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配内存。

    • -Xmx512m

      设置 JVM 最大可用内存为 512M。

    • -Xmn200m

      设置年轻代大小为 200M。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为 64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun 官方推荐配置为整个堆的 3/8。

    • -Xss128k

      设置每个线程的堆栈大小。JDK5.0 以后每个线程堆栈大小为 1M,以前每个线程堆栈大小为 256K。更具应用的线程所需内存大小进行调整。在相同物理内 存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在 3000~5000 左右。

    • -Xloggc:file

      1. 与-verbose:gc 功能类似,只是将每次 GC 事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。
      2. 若与 verbose 命令同时出现在命令行中,则以-Xloggc 为准。
    • -Xprof

      1. 跟踪正运行的程序,并将跟踪数据在标准输出输出;适合于开发环境调试。
  1. 用-XX 作为前缀的参数列表在 jvm 中可能是不健壮的,SUN 也不推荐使用,后续可能会在没有通知的情况下就直接取消了;
  2. 但是由于这些参数中的确有很多是对我们很有用的,比如我们经常会见到的-XX:PermSize、-XX:MaxPermSize 等等;

首先来介绍行为参数

参数及其默认值描述
-XX:-DisableExplicitGC 禁止调用 System.gc();但 jvm 的 gc 仍然有效
-XX:+MaxFDLimit 最大化文件描述符的数量限制
-XX:+ScavengeBeforeFullGC 新生代 GC 优先于 Full GC 执行
-XX:+UseGCOverheadLimit 在抛出 OOM 之前限制 jvm 耗费在 GC 上的时间比例
-XX:-UseConcMarkSweepGC 对老生代采用并发标记交换算法进行 GC
-XX:-UseParallelGC 启用并行 GC
-XX:-UseParallelOldGC 对 Full GC 启用并行,当-XX:-UseParallelGC 启用时该项自动启用
-XX:-UseSerialGC 启用串行 GC
-XX:+UseThreadPriorities 启用本地线程优先级

上面表格中黑体的三个参数代表着 jvm 中 GC 执行的三种方式,即串行、并行、并发;

  1. 串行(SerialGC)是 jvm 的默认 GC 方式,一般适用于小型应用和单处理器,算法比较简单,GC 效率也较高,但可能会给应用带来停顿;
  2. 并行(ParallelGC)是指 GC 运行时,对应用程序运行没有影响,GC 和 app 两者的线程在并发执行,这样可以最大限度不影响 app 的>运行;
  3. 并发(ConcMarkSweepGC)是指多个线程并发执行 GC,一般适用于多处理器系统中,可以提高 GC 的效率,但算法复杂,系统消耗较大;

性能调优参数列表

参数及其默认值描述
-XX:LargePageSizeInBytes=4m 设置用于 Java 堆的大页面尺寸
-XX:MaxHeapFreeRatio=70 GC 后 java 堆中空闲量占的最大比例
-XX:MaxNewSize=size 新生成对象能占用内存的最大值
-XX:MaxPermSize=64m 老生代对象能占用内存的最大值
-XX:MinHeapFreeRatio=40 GC 后 java 堆中空闲量占的最小比例
-XX:NewRatio=2 新生代内存容量与老生代内存容量的比例
-XX:NewSize=2.125m 新生代对象生成时占用内存的默认值
-XX:ReservedCodeCacheSize=32m 保留代码占用的内存容量
-XX:ThreadStackSize=512 设置线程栈大小,若为 0 则使用系统默认值
-XX:+UseLargePages 使用大页面内存

我们在日常性能调优中基本上都会用到以上黑体的这几个属性;

调试参数列表:

参数及其默认值描述
-XX:-CITime 打印消耗在 JIT 编译的时间
-XX:ErrorFile=./hs_err_pid<pid>.log 保存错误日志或者数据到文件中
-XX:-ExtendedDTraceProbes 开启 solaris 特有的 dtrace 探针
-XX:HeapDumpPath=./java_pid.hprof 指定导出堆信息时的路径或文件名
-XX:-HeapDumpOnOutOfMemoryError 当首次遭遇 OOM 时导出此时堆中相关信息
-XX:OnError="<cmd args>;<cmd args>" 出现致命 ERROR 之后运行自定义命令
-XX:OnOutOfMemoryError="<cmd args>;<cmd args>" 当首次遭遇 OOM 时执行自定义命令
-XX:-PrintClassHistogram 遇到 Ctrl-Break 后打印类实例的柱状信息,与 jmap -histo 功能相同
-XX:-PrintConcurrentLocks 遇到 Ctrl-Break 后打印并发锁的相关信息,与 jstack -l 功能相同
-XX:-PrintCommandLineFlags 打印在命令行中出现过的标记
-XX:-PrintCompilation 当一个方法被编译时打印相关信息
-XX:-PrintGC 每次 GC 时打印相关信息
-XX:-PrintGC Details 每次 GC 时打印详细信息
-XX:-PrintGCTimeStamps 打印每次 GC 的时间戳
-XX:-TraceClassLoading 跟踪类的加载信息
-XX:-TraceClassLoadingPreorder 跟踪被引用到的所有类的加载信息
-XX:-TraceClassResolution 跟踪常量池
-XX:-TraceClassUnloading 跟踪类的卸载信息
-XX:-TraceLoaderConstraints 跟踪类加载器约束的相关信息
posted @ 2019-08-22 19:52  CharyGao  阅读(370)  评论(0编辑  收藏  举报