IDEA导入大型项目在编译时出现资源不足

  • 原因分析
  • 1、IDEA启动参数配置不当
  • 2、编译器Heap参数设置不当
  • 3、如果是Web项目,在运行时会做编译、构建Artifacts,编译很快就完成了,但是构建Artifacts却很慢
  • 4、如果编译还是不行,可使用ant对项目进行编译
  • 总结


原因分析

1、IDEA启动参数配置不当

在大多数情况下,我们安装了IDEA是保存默认的启动参数。对于一般的小型项目是能正常编译和运行的,但是,当项目比较大(源码1G左右),使用IDEA编译时就会报“资源不足”:

  1. 检查IDEA虚拟机启动配置文件的配置(idea.exe.vmoptions/idea64.exe.vmoptions,根据操作系统而定);
-server
   -Xms128m
   -Xmx512m
   -XX:ReservedCodeCacheSize=240m
   -XX:+UseConcMarkSweepGC
   -XX:SoftRefLRUPolicyMSPerMB=50
   -ea
   -Dsun.io.useCanonCaches=false
   -Djava.net.preferIPv4Stack=true
   -Djdk.http.auth.tunneling.disabledSchemes=""
   -XX:+HeapDumpOnOutOfMemoryError
   -XX:-OmitStackTraceInFastThrow
  1. 可见以上配置是没办法满足大型项目的编译与运行的, 将-Xmx调大 ,建议将-Xms(初始化内存)和-Xmx(最大内存)设置成一样的,避免重新分配内存是出现卡顿;
  2. -Xmx参数的调整需要根据计算机内存而来,例如:计算机内存为8G,可设置**-Xmx4096m**;
  3. 如果以上操作完成了还是不行的话,我们就继续看下面;

2、编译器Heap参数设置不当

  1. 查看IDEA编译器的Heap参数
  2. 默认情况下为700M,可能不满足编译过程所需,一般设置为1500M
  3. 如果编译还是报资源不足,就继续调大heap的参数

3、如果是Web项目,在运行时会做编译、构建Artifacts,编译很快就完成了,但是构建Artifacts却很慢

  1. 设置编译输出的路径为/WEB-INF/classes
  2. 设置Artifacts的Web exploded为WebRoot
  3. 设置Tomcat启动的VM参数,删除Build Artifacts

4、如果编译还是不行,可使用ant对项目进行编译

  1. 生成build.xml
  2. IDEA添加ant
  3. 设置ant编译参数
  4. 设置ant编译使用的JDK
  5. 注意build.xml中编译节点,建议设置source=“1.7” target=“1.7”,以避免高版本JDK环境编译失败。
  6. 删除Build,添加Run Ant target

总结

环境搭建使用的是IDEA2019,可能和IDEA其他版本略有不同。若有叙述不当之处,请见谅。若有问题,请留言。