IntelliJ IDEA 之一常用配置与使用

大纲

IDEA 介绍

JetBrains 是一家捷克的软件开发公司,IntelliJ IDEA 是该公司旗下赫赫有名的 IDE 产品,支持目前主流的技术和框架,擅长企业应用、移动应用和 Web 应用的开发。IntelliJ IDEA 目前有两个版本,分别是社区版(免费)与旗舰版(收费),社区版支持 JavaSE、Android、Kotlin、Groovy、Scala 开发,旗舰版额外支持 JavaEE 开发。IntelliJ IDEA 和 Eclipse 一样有强大的插件系统支持,官方的插件可以从这里获取。

IDEA 的 config 与 system 目录

启动 IntelliJ IDEA 后会自动生成一个全新的默认配置,配置目录的位置分别是 /.IntelliJIdea2019.1/config、/.IntelliJIdea2019.1/system。其中 config 目录是 IntelliJ IDEA 个性化的配置目录,或者说是整个 IDE 的设置目录,该目录主要记录了 IDE 主要配置功能、插件功能、自定义的代码模板、自定义的文件模板、自定义的快捷键、Project 的 tasks 记录等等个性化设置。system 目录是 IntelliJ IDEA 的系统文件目录,是 IntelliJ IDEA 与开发项目的一个桥梁,里面主要有缓存、索引、容器文件输出等等,虽然不是最重要目录,但也是最不可或缺的目录之一。

1
2
3
4
5
# Linux下重置IDEA的所有配置
$ rm -rf ~/.config/JetBrains
$ rm -rf ~/.local/share/JetBrains
$ rm -rf ~/.IntelliJIdea2019.1/config
$ rm -rf ~/.IntelliJIdea2019.1/system

IDEA 中 Project 与 Module 的概念

在 Eclipse 中有 Workspace(工作空间)和 Project(工程)的概念,在 IntelliJ IDEA 中只有 Project(工程)和 Module(模块)的概念,IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。这里的对应关系为,Eclipse 中 Workspace 相当于 IDEA 中的 Project,Eclipse 中 Project 相当于 IDEA 中的 Module。Eclipse 可以在同一个窗口管理 N 个项目,这在 IntelliJ IDEA 是无法做到的。IntelliJ IDEA 提供的解决方案是打开多个项目实例,即打开多个项目窗口,即一个 Project 打开一个 Window 窗口。

IDEA 对版本控制工具的支持

很多人认为 IntelliJ IDEA 自带了 SVN 或者 Git 等版本控制工具,认为只要安装了 IntelliJ IDEA 就可以完全使用版本控制应有的功能。这完全是一种错误的解读,IntelliJ IDEA 是自带对这些版本控制工具的插件支持,但是该装什么版本控制客户端还是要照样装的,这一点和 Eclipse 是一样的。在 Window 环境下,经常使用的 Git 客户端有 msysGit、TortoiseGit 等。IntelliJ IDEA 对版本控制的支持是以插件化的方式来实现的,旗舰版默认支持目前主流的版本控制软件,例如 CVS、Git、Subversion (SVN)、Mercurial、Perforce、GitHub。

IDEA 支持本地文件历史的记录

当项目中没有使用版本控制功能,IntelliJ IDEA 也默认提供了本地文件历史记录。界面操作路径:选中文件 –> Local History –> Show History

IDEA 调整 VM 配置文件

  • 根据电脑系统的位数,选择修改 32 位的 VM 配置文件(idea.vmoptions)或者 64 位的 VM 配置文件(idea64.vmoptions)
  • 32 位操作系统内存不会超过 4G,因此没有多大空间可以调整,建议不用调整
  • 64 位操作系统中 8G 内存以下的机子或者是静态页面的开发者,建议不用调整
  • 64 位操作系统且内存大于 8G 的,如果是开发大型项目、Java 项目或者是 Android 项目,建议进行修改,经常修改的就是下面三个参数
  • 如果正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA 来解决计算机的卡、慢等问题,这基本上是不可能的,事实上 IntelliJ IDEA 更占用系统资源
1
2
3
4
5
6
7
8
9
10
11
# 默认配置的内容如下,配置文件所在目录:$idea-root/bin/
-Xms128m
-Xmx512m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50

# 配置调整的建议
-Xms128m,16G内存的机器可尝试设置为 -Xms512m,用于设置初始的内存数,提高该值可以提高Java程序的启动速度
-Xmx750m,16G内存的机器可尝试设置为 -Xmx2048m,用于设置最大内存数,提高该值可以减少GC执行的频率,提高程序性能
-XX:ReservedCodeCacheSize=240m,16G内存的机器可尝试设置为 -XX:ReservedCodeCacheSize=1024m,用于保留代码占用的内存容量

IDEA 缓存和索引的清理

IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比。在 IntelliJ IDEA 创建索引过程中即使编辑了代码也是编译不了、运行不起来的,只能等 IntelliJ IDEA 创建索引完成。IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码提示等操作的速度。但是在某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如:断电、蓝屏引起的强制关机,当重新启动 IntelliJ IDEA,很可能 IntelliJ IDEA 会报各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。即使没有断电、蓝屏的情况发生,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出现了问题,这种情况还不少,遇到此类问题可以尝试清理缓存和索引。

idea-clear-cache

idea-clear-cache-2

  • 一般建议点击 “Invalidate and Restart”,这样会清理得比较干净。
  • 清除索引和缓存会使得 IntelliJ IDEA 的 Local History 丢失,所以如果项目没有加入到版本控制,而又需要保留项目文件的历史版本记录,那最好备份下 LocalHistory 目录,该目录位置在: ~/.IntelliJIdea14/system/LocalHistory。
  • 通过上面的方式清除缓存与索引,本质也就是去删除 system 目录下对应的文件而已,所以如果不用上述方法也可以先关闭 IntelliJ IDEA,然后直接删除整个 system 目录。当 IntelliJ IDEA 重启的时候,会自动重新创建新的 system 目录以及项目对应的缓存和索引。

IDEA 的 Database 功能

配置 Database 就是为了有一个 GUI 管理数据库功能,但是这并不是 IntelliJ IDEA 的 Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。Database 最大的特性就是针对 Java Web 项目经常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 Domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 Domain 对象等。