[No000019A]IDEA 设置手册
[No000019A]idea设置手册.rar
IDEA 设置手册
plugin
-
String Manipulation,字符串转换
-
MybatisCodeHelperPro
使用说明
- 下载已破解的插件压缩包,一定注意校验 sha1sum!
- 在 IDEA 中本地安装插件.
- 激活方法:点击 IDEA 菜单 Tools-> MybatisCodeHelper->offlineActivation;
- 输入任意激活码:https://zhile.io/2019/04/23/mybatis-code-helper-pro-crack.html
-
jrebel
在 jrebel server 处,写上: http://139.199.89.239:1008/88414687-3b91-4286-89ba-2dc813b107ce 如果出现激活过期的情况,请重新生成 guid,替换原来的 guid 即可邮箱随便写,即可激活。
-
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;
代码管控
- svn,需要安装 command line tool 组件
- maven,部门私服配置见 setting 样例.xml;
- 如果使用外部包管理,建议参照 https://www.jianshu.com/p/4d5bb95b56c5 配置;
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</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 工具进行观察后个性化调整。
-server
-Xms512m
-Xmx2048m
-XX:ReservedCodeCacheSize=512m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=80
-ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf
-Dkotlinx.coroutines.debug=off
-javaagent:jetbrainsCrack.jar
//-XX:MaxPermSize=350m,16G 内存的机器可尝试设置为-XX:MaxPermSize=500m//无此选项
设置 JVM 内存设置
-
设置 JVM 内存的四个参数:
- -Xmx
Java Heap 最大值,默认值为物理内存的 1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
- -Xms
ava Heap 初始值,Server 端 JVM 最好将-Xms 和-Xmx 设为相同值,开发测试机 JVM 可以保留默认值;
- -Xmn
Java Heap Young 区大小,不熟悉最好保留默认值;
- -Xss
每个线程的 Stack 大小,不熟悉最好保留默认值;
-
设置 JVM 内存分配:
- 当在命令提示符下启动并使用 JVM 时(只对当前运行的类 Test 生效):
java-Xmx128m-Xms64m -Xmn32m -Xss16m Test
-
当在服务器环境下(如 Tomcat)启动并使用 JVM 时(对当前服务器环境下所以 Java 程序生效):
- 设置环境变量:
- 变量名:CATALINA_OPTS
- 变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m
- 打开 Tomcat 根目录下的 bin 文件夹,编辑 catalina.bat,
- 将其中的%TALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m
查看设置 JVM 内存信息
//最大可用内存,对应-Xmx
Runtime.getRuntime().maxMemory();
//当前 JVM 空闲内存
Runtime.getRuntime().freeMemory();
//当前 JVM 占用的内存总数,其值相当于当前 JVM 已使用的内存及 freeMemory() 的总和
Runtime.getRuntime().totalMemory();
-
关于 maxMemory(),freeMemory() 和 totalMemory():
- maxMemory() 为 JVM 的最大可用内存,可通过-Xmx 设置,默认值为物理内存的 1/4,设值不能高于计算机物理内存;
- totalMemory() 为当前 JVM 占用的内存总数,其值相当于当前 JVM 已使用的内存及 freeMemory() 的总和,会随着 JVM 使用内存的增加而增加;
- freeMemory() 为当前 JVM 空闲内存,因为 JVM 只有在需要内存时才占用物理内存使用,所以 freeMemory() 的值一般情况下都很小,而 JVM 实际可用内存并不等于 freeMemory(),而应该等于 maxMemory()-totalMemory()+freeMemory()。及其设置 JVM 内存分配。 官方文档见:http://docs.sun.com/source/819-0084/pt_tuningjava.html
-
java 启动参数共分为三类;
- 标准参数(-),所有的 JVM 实现都必须实现这些参数的功能,而且向后兼容;
- 非标准参数(-X),默认 jvm 实现这些参数的功能,但是并不保证所有 jvm 实现都满足,且不保证向后兼容;
- 非 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
- 与-verbose:gc 功能类似,只是将每次 GC 事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。
- 若与 verbose 命令同时出现在命令行中,则以-Xloggc 为准。
-
-Xprof
- 跟踪正运行的程序,并将跟踪数据在标准输出输出;适合于开发环境调试。
-
- 用-XX 作为前缀的参数列表在 jvm 中可能是不健壮的,SUN 也不推荐使用,后续可能会在没有通知的情况下就直接取消了;
- 但是由于这些参数中的确有很多是对我们很有用的,比如我们经常会见到的-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 执行的三种方式,即串行、并行、并发;
- 串行(SerialGC)
是 jvm 的默认 GC 方式,一般适用于小型应用和单处理器,算法比较简单,GC 效率也较高,但可能会给应用带来停顿;
- 并行(ParallelGC)
是指 GC 运行时,对应用程序运行没有影响,GC 和 app 两者的线程在并发执行,这样可以最大限度不影响 app 的>运行;
- 并发(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 | 跟踪类加载器约束的相关信息 |