[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 跟踪类加载器约束的相关信息

[No000019A]IDEA 设置手册的更多相关文章

  1. zabbix3.x web设置手册(2)

    在浏览器中输入:http://10.50.32.48/zabbix/setup.php 如下图: 点击Next step: 如上图,右侧全为ok,则点击Next step:若右侧有fail的情况,需要 ...

  2. (转载)Linux一句话精彩

    (转载)http://bjsfly.blog.163.com/blog/static/161276642007845228371/ 0001[url=111]111[/url] [ 本帖最后由 bjc ...

  3. PHP的错误处理

    PHP的错误处理机制 php的错误处理是比较复杂的, 本文讲解php中所有错误相关的重要知识点做一次梳理, 便于理解php的错误机制. 基础知识 在此之前, 先熟悉一下php error的基础知识 预 ...

  4. linux精彩收集

    ----------------------------网络无关篇-------------------------- 0001 修改主机名(bjchenxu) vi /etc/sysconfig/n ...

  5. 深入Linux内核架构——进程管理和调度(上)

    如果系统只有一个处理器,那么给定时刻只有一个程序可以运行.在多处理器系统中,真正并行运行的进程数目取决于物理CPU的数目.内核和处理器建立了多任务的错觉,是通过以很短的间隔在系统运行的应用程序之间不停 ...

  6. Linux命令总结大全,包含所有linux命令

    使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...

  7. Linux工具之man手册彩色页设置

    说明: 对于我们开发人员或者运维工程师来说,经常要查询某个系统命令或者C函数接口的使用方法,最好的最专业的资料就是man手册,通过一些设置可以让man手册页面显示适当颜色,方便阅读,增强美观性. 设置 ...

  8. 阿里巴巴Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?

    集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生. 关于HashMap,很多人都对他有一些基本的了解,比如他和hashtab ...

  9. Linux使用手册-时区和时间设置

    1. #vi /etc/sysconfig/clockZONE=”Asia/Shanghai”UTC=false2.#vi /usr/share/zoneinfo/Asia/Shanghai,如果结尾 ...

随机推荐

  1. 如何测试Web服务.2

    -->全文字数:2700,需要占用你几分钟的阅读时间 ,您也可以收藏后,时间充足时再阅读- -->上一节讲了<Web服务基础介绍>,本节介绍可用于测试web服务的开源测试工具. ...

  2. flutter 从创建到渲染的大体流程

    从创建到渲染的大体流程是:根据Widget生成Element,然后创建相应的RenderObject并关联到Element.renderObject属性上,最后再通过RenderObject来完成布局 ...

  3. HihoCoder - 1652:三角形面积和2(扫描线)

    题意:给定X轴上的一些三角形,求面积并. 每个三角形的给出形式是Li,Ri,Xi,Yi,表示三个顶点分别是(Li,0):(Ri,0):(Xi,Yi),且满足Li<=Xi<=Ri: 思路:我 ...

  4. http 和 https(通俗原理了解)

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...

  5. file size php

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  6. Java Excel 导入导出(二)

    本文主要叙述定制导入模板——利用XML解析技术,确定模板样式. 1.确定模板列 2.定义标题(合并单元格) 3.定义列名 4.定义数据区域单元格样式 引入jar包: 一.预期格式类型 二.XML模板格 ...

  7. How would you differentiate JDK, JRE, JVM, and JIT?

    Q5. How would you differentiate JDK, JRE, JVM, and JIT?A5. There is no better way to get the big pic ...

  8. 关于springboot项目的jar和war两种打包方式部署的区别

    关于springboot项目的jar和war两种打包方式部署的区别 关于springboot项目的jar和war两种打包方式部署的区别? https://bbs.csdn.net/topics/392 ...

  9. Codeforces Round #558 (Div. 2)-Cat Party (Hard Edition)-(前缀和 + 模拟)

    http://codeforces.com/problemset/problem/1163/B2 题意:有n天,每天有一个颜色,截取前x天,随便抽掉一天,使剩下的各个颜色出现的次数相等. 解题,也可以 ...

  10. 链表 | 判断链表B是否为链表A的连续子序列

    王道P38T16 代码: bool common_subSequence(LinkList &A,LinkList &B){ LNode *pA,*pB=B->next,*p=A ...