[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. vue 项目中安装npm--save-dev 和 --save 命令

    在vue项目中我们常用npm install 安装模块或插件 有两种命令把他们写入到 package.json 文件里面去 例如安装axios 安装到开发环境npm axios --save-dev ...

  2. python应用-综合应用题解决

    题目: A,B,C,D,E五个人捕鱼,不计其数,然后休息, 早上A第一个醒来,将鱼均分成五份,把多余的一条鱼扔掉,拿走自己的一份, B第二个醒来,也将鱼均分为五份,把多余的一条鱼扔掉,拿走自己的一份. ...

  3. Gradle 知识点

    mac 系统中,下载的 Gradle 压缩包解压后存储的文件夹:/Users//.gradle/wrapper/dists 当Gradle运行时,会根据settings.gradle的配置情况,构建一 ...

  4. 26、pathlib文件系统模块(了解)

    一.pathlib库官方定义 pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径).path ...

  5. Windows UI自动化测试的XPATH实现 - WPATH

    https://segmentfault.com/a/1190000010339021 从事Windows 桌面应用自动化测试也有一些年了,现在谈这个话题并不流行.因为除了企业级应用,很少有公司会只选 ...

  6. SSH框架学习中遇到的问题

    在web.xml中配置struts2过滤器时,struts2 2.5之前的版本有ng,而2.5之后没有ng,如图 还有要注意web.xml的版本约束,之前一直遇到问题,后来在网上才发现原来时web的版 ...

  7. react native 依赖库管理:入门

    目标文件:package.json { .... "dependencies": { "react": "16.8.3", "re ...

  8. LeetCode 422. Valid Word Square

    原题链接在这里:https://leetcode.com/problems/valid-word-square/ 题目: Given a sequence of words, check whethe ...

  9. swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端

    近半年来努力付出,项目终于要正式结项了,团队4人经历了很多困难,加班加点,最终完成了!剩下的时间将总结一下在该项目中用到知识和遇到问题.今天就从swoole说起!项目中实现异步大文件传输的功能,在服务 ...

  10. luogu P3975 [TJOI2015]弦论 SAM

    luogu P3975 [TJOI2015]弦论 链接 bzoj 思路 建出sam. 子串算多个的,统计preant tree的子树大小,否则就是大小为1 然后再统计sam的节点能走到多少串. 然后就 ...