IntelliJ IDEA 性能优化的教程详解_相关技巧

来源:脚本之家  责任编辑:小易  

本身就是全称IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java等极少数语言www.zgxue.com防采集请勿采集本网。

idea打开的多了 内存占用也就多了 下边是亲试的优化ide性能的方法

1、虽然AndroidStudio是基于IDEA开发的,但studio是一个纯粹的Android开发环境,并不支持诸如Groovy,scale虽然IDEA社区版支持,但google已把它们剔除了,所以可能Studio支持的开发更少,貌似属于弊的范畴

1.设置JVM的启动参数:

file->settings->version control 选中这一栏,右边有个 点红色减号,就解除了,然后去项目目录下删除.git这个文件夹,你可以不删除,为了以后继续关联

  进入idea的安装目录的bin文件夹

这个是intellij IDEA默认的编译路径,就是存放class或者包文件的地方,是IDE自动生成的 一、如何在Intellij IDEA用图形界面打开.java文件 第一种方法:点击Open找到文件,直接打开即可,不过可能

  打开 idea.exe.vmoptions 文件, 修改-Xmx 的 值为2048m

intellij idea 分为企业版和个人版,按照版本年限,价格如下: 企业版 a.企业版一年,费用为:¥4,400 b.企业版两年,费用为:¥7,900 向左转|向右转 向左转|向右转个人版 a.个人版一年,费用为

  打开 idea64.exe.vmoptions 文件, 修改-Xmx 的 值为2048m

inellij IEDA没用过不知道 不过强烈推荐eclipse,免费软件,配置好jdk环境变量后解压eclipse就能使用,可扩展性非常好,扩展功能也很方便,学习工作都能用它。

  

  打开idea.properties文件,找到idea.max.intellisense.filesize,默认是2500,改为25000(数值仅供参考,具体数值根据自己文件大小来定)

  参数作用:

    -Xms1024m 设置初时的内存大小,提高Java程序的启动速度

    -Xmx2048m 设置最大内存数,提高该值,可以减少内存Garage收集的频率,提高程序性能

    -XX:ReservedCodeCacheSize=480m设置代码内存容量

    -XX:+UseParNewGC 使用并行收集算法

    -server 控制内存garage方式,这样你无需在花一到两分钟等待内存garage的收集

2.菜单配置设置JVM的启动参数:通过Help - Edit Custom VM Options...菜单设置配置,IntelliJ会优先使用这个地方的配置文件

3.关闭代码检查:  

IntelliJ的代码检测功能非常强大,但也占用了一些资源,可以将默认的除 Error之外的其他级别的检测都去掉  

4.清空缓存并重建索引:

  将编译进程和Maven的堆值设置大一些

  

ps:下面看下IntelliJ IDEA 更新后,电脑卡成球,该如何优化?

来源 | https://urlify.cn/NBBbam

在和同事的一次讨论中发现,对 IntelliJ IDEA 内存采用不同的设置方案,会对 IDE 的速度和响应能力产生不同的影响。

Don't be a Scrooge and give your IDE some more memory

不要做守财奴,给IDE多留点内存吧。

昨天,大家就是否自定义IntelliJ IDEA 的内存设置进行了讨论,有些人选择默认设置,有些人会对默认的设置进行简单的变更,还有一些开发者会基于他们的需求进行全面复杂的设置。笔者目前的工作是处理几个微服务项目和一个老项目,而客户的核心业务需求非常大。对 IntelliJ IDEA 内存进行简单设置以后,笔者明显感受到了该 IDE 在速度和响应方面的改善。但当时笔者并未进行具体的测量,所以这只是主观感受而已。

不过,参与讨论的一位开发者给笔者发了一份他的设置,虽然是针对同个项目,该设置却极其复杂。笔者对自己的设置并无不满,但非常好奇,这些完全不同的设置对比 JetBrains 提供的默认设置,会有怎样的不同。

目标

笔者的计划是,在一个接近日常开发项目的场景下(加载一个大项目、加载2、3个微服务、git pull 后刷新大项目),测试各个设置带来的效果,并选出内存消耗和速度都达到最优时的最佳设置。

测试机器和项目

笔记本电脑:MacBook Pro Retina, 2.3GHz Intel Core i7, 16GB 1600Mhz DDR3,SSD Disc, OS X Yosemite

项目

大项目—— Monolith ,70万行代码( Java[1] 8 和 Groovy ),303个Gradle模块

两个微服务——约有10000——20000行代码( Java 8 和 Groovy )的小项目,各有一个Gradle模块

测试场景

    在 Idea 中关闭所有项目 基于测试文件 idea.vmoptions 进行设置 重启电脑 启动后关闭所有不相关的项目( communicators 等等) 打开 Idea(测试时间) 打开大项目(测试时间) 检查 jstat -gcutil 打开两个微服务项目(测试时间) 检查 jstat -gcutil 返回大项目然后点击“刷新 Gradle 项目”按钮(测试时间) 检查 jstat -gcutil

jstat -gcutil

jstat 是 JDK 自带的工具,主要利用 JVM 内建的指令对 Java 应用程序的资源和性能进行实时的命令行监控,还包括对 Heap size 和垃圾回收状况的监控。它有许多选项来收集各种数据,但这里只会用到: 

-gcutil :

-gcutil - Summary of garbage collection statistics.

S0: Survivor space 0 utilization as a percentage of the space's current capacity.

S1: Survivor space 1 utilization as a percentage of the space's current capacity.

E: Eden space utilization as a percentage of the space's current capacity.

O: Old space utilization as a percentage of the space's current capacity.

M: Metaspace utilization as a percentage of the space's current capacity.

CCS: Compressed class space utilization as a percentage.

YGC: Number of young generation GC events.

YGCT: Young generation garbage collection time.

FGC: Number of full GC events.

FGCT: Full garbage collection time.

GCT: Total garbage collection time.

这个命令的输出结果如下:

S0     S1    E     O     M    CCS  YGC YGCT FGC  FGCT   GCT

89.70 0.00 81.26 74.27 95.68 91.76 40 2.444 14  0.715  3.159

在本文中,最重要的参数是 GC 事件( YGC 和 FGC )次数和收集时间( YGCT 和 FGCT )。

测试设置

笔者设置了四种不同的设置,为了好记,给它们起了不同的名字。

默认(灰色标识)

JetBrains 提供的默认设置:

-Xms128m

-Xmx750m

-XX:MaxPermSize=350m

-XX:ReservedCodeCacheSize=240m

-XX:+UseCompressedOops

Big(大)(红色标识)

给 Xmx 配 4096MB, ReservedCodeCacheSize 设置 1024MB,这已经是相当多的内存了:

-Xms1024m

-Xmx4096m

-XX:ReservedCodeCacheSize=1024m

-XX:+UseCompressedOops

Balanced(平衡的)(蓝色标识)

Xmx 和 Xms 都分配 2GB ,这是相当平衡的内存消耗:

-Xms2g

-Xmx2g

-XX:ReservedCodeCacheSize=1024m

-XX:+UseCompressedOops

Sophisticated(复杂的)(橘色标识)

和上面一样, Xmx 和 Xms 都分配2GB,但是给 GC 和内存管理指定不同的垃圾回收器和许多不同的标志:

-server

-Xms2g

-Xmx2g

-XX:NewRatio=3

-Xss16m

-XX:+UseConcMarkSweepGC

-XX:+CMSParallelRemarkEnabled

-XX:ConcGCThreads=4

-XX:ReservedCodeCacheSize=240m

-XX:+AlwaysPreTouch

-XX:+TieredCompilation

-XX:+UseCompressedOops

-XX:SoftRefLRUPolicyMSPerMB=50

-Dsun.io.useCanonCaches=false

-Djava.net.preferIPv4Stack=true

-Djsse.enableSNIExtension=false

-ea

以上便是笔者的测试设置,为了执行该测试用例,还需要在~/Library/Preferences/IntelliJIdea15/下创建一个idea.vmoptions文件(这是 Mac OS 系统下的路径设置,基于你的操作系统进行设置)

现在,执行测试用例并比较结果。

结果Idea启动时间

正如上图所示,启动时间并不依赖于内存设置。Idea 在所有场景下的测试时间都是10秒,无论内存分配有多少。这并不足为奇,因为在此早期阶段,这些设置并不会影响到应用的行为。

加载大项目花费的时间

现在加载 Monolith 项目及其70万行代码。终于,出现了一些的差异。默认设置所花费的时间几乎是其它的3倍。很明显,如此庞大的代码库需要更多的内存。如果我们执行:

jstat -gcutil <IDEA_PID>

会发现,对比其它设置, GC 在默认设置下会变得异常忙碌。

不仅 GC 释放内存的总时间非常高(几乎达到了50倍),而且 Full GC 的平均执行时间也非常非常长。大量的时间都花在了 Full GC 上面,这是 IDE 响应速度低的主要原因。

在IDEA中打开两个微服务

现在加载这两个微服务项目,在 IDEA 中打开并且对比他们所消耗的时间。

在这个测试用例下,差异还是非常明显的,复杂设置表现最佳,而默认设置仍旧输给了其他两种设置。

再次使用jstat –gcutil

加载完两个微服务项目后,来检查一下同时打开3个项目的情况下, GC 的表现情况。经测试发现,3个不同的自定义设置表现几乎差不多,而默认设置简直弱爆了。

最后的角逐:重新加载Monolith

现在,笔者需要从仓库中获得 Monolith 项目的最新版本,并且刷新 Gradle 模块,这样, IDEA 能看到所有的新类。

重要提示:代表默认设置的灰色条形柱非常高,因为 IDEA 在刷新过程中崩溃了,笔者无法测量实际时间。显然,默认分配的内存不足以执行该操作。

但从三个自定义例子中可以发现,大内存配置花费的时间是最短的。所以,内存分配还是起到了作用。

最后一次使用jstat-gcutil

因为 IDEA 在默认设置下无法刷新项目,所以,这次测试默认设置就不包括在里面。

从上图可以看出,三者之间的差异不大,但是 Big 配置下的 Full GC 执行时间最快。此外, Xmx 内存大些对响应能力提升的帮助非常明显。

总结

在这次简短的实验中,大家可以发现,即使对 IntelliJ IDEA 内存进行微调,都可以大大提升 IDE 性能。当然,内存分配越多,执行效果就越好。但是,你也会发现, IDE 之外许多其他应用程序也需要消耗内存,所以,大家的目标应该是在提高性能和内存消耗之间找到一个平衡。笔者认为,在大多数情况下,把 Xmx 值设置在 2G 和 3G 之间是最佳的。如果你有更多的时间可以用 jstat 和 jvisualm 检查用不同的 JVM 设置如何影响性能和内存占用。

到此这篇关于IntelliJ IDEA 更新后电脑卡成球该如何优化的文章就介绍到这了,更多相关IntelliJ IDEA更新电脑卡内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

说明:test1是个java项目里边有个Person类,test2是个web项目,test2要用到test1的Person类1、先创建一个叫test1的java项目,新建一个Person类,2、创建第2个项目test2勾选Web Application创建完成后2、配置test2Crtl+Shift+Alt+S 打开Project Structure,选择Modules->点第2竖栏的加号->选择Module选第3项,Import existing module,点浏览按钮,找到test1项目所在路径,点Finish在第2竖栏选中test2,在Module SDK 右侧点+选择第3项,选择test1,完成后入下图这就在test2里用test1xiangm里的Person类了内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • idea springboot项目配置热更新的步骤详解(无需每次手动重启服务器)
  • intellij idea卡死,如何优化内存
  • 微信小程序搭建及解决登录失败问题
  • asp与js的数组和字符串下标介绍
  • http协议简介_动力节点java学院整理
  • vscode 打字特效插件power mode安装使用介绍
  • 微信小程序版的知乎日报开发实例
  • websocket im聊天教程 教你用goeasy快速实现im聊天
  • transform实现html5 video标签视频比例拉伸实例详解
  • http referer详解及referer控制
  • 详解google protobuf简明教程
  • git 教程之创建仓库详解
  • intellij idea 怎么选择持久性单元
  • intelliJ IDEA全称是什么?
  • intellij idea是免费的吗
  • IntelliJ Idea的好处及优点有哪些
  • IntelliJ IDEA 旗舰版与社区版有什么不同?
  • 在intellij idea 中怎么不用git 解除关联
  • intellij IDEA的target文件有什么用?
  • intellij idea 多少钱
  • IntelliJ IDEA和Eclipse比较,哪个更好
  • IntelliJ IDEA真的比Eclipse智能吗
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页相关技巧idea springboot项目配置热更新的步骤详解(无需每次手动重启服务器)intellij idea卡死,如何优化内存微信小程序搭建及解决登录失败问题asp与js的数组和字符串下标介绍vscode 打字特效插件power mode安装使用介绍微信小程序版的知乎日报开发实例websocket im聊天教程 教你用goeasy快速实现im聊天transform实现html5 video标签视频比例拉伸实例详解详解google protobuf简明教程git 教程之创建仓库详解2019最新的pycharm激活码(推荐)进制转换算法原理(二进制 八进制eclipse 格式化代码时不换行与自微信小程序设置http请求的步骤详几款开源的中文分词系统十进制负数转换为二进制、八进制从console.log说起(console.log详url 长度有限制吗?git 撤销操作、删除文件和恢复文分享10个免费超棒的编程用等宽字体git 教程之分支管理详解git忽略提交的3种方法及git忽略规则基于git的常用撤销技巧与解决冲突方法(推关于base64编码的原理及实现方法分享分享几道和「滑动窗口」有关的算法面试题如何让vscode显示中文界面使用动画实现微信读书的换一批效果(两种方分享15个美化代码的代码语法高亮工具git恢复删除的分支及内容的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved