IDEA FQA 及服务启动优化

404 阅读3分钟

Java heap space

image.png

编辑(config配置缓存、system系统缓存) 自定义目录

OpenJDK Server VM warning: ignoring option PermSize=128M; support was removed in 8.0 OpenJDK Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0 解释:

这条警告信息来自OpenJDK的Server VM(虚拟机),表示你正在尝试设置一个不再受支持的JVM选项PermSize。在Java 8及更高版本中,PermSizeMaxPermSize选项已经被移除,因为Java 8引入了一个新的内存区域叫做Metaspace。

解决方法:

要解决这个问题,你需要移除这些选项。如果你是通过命令行参数设置的,应该从启动脚本中去除类似-XX:PermSize=128M-XX:MaxPermSize=256M这样的参数。

如果你使用的是Java 8或更高版本,应该使用以下Metaspace相关的选项来代替:

  • -XX:MetaspaceSize:初始的元空间大小
  • -XX:MaxMetaspaceSize:最大元空间大小

image.png

启动优化 idea64.exe.vmoptions

\-Xms1024m
\-Xmx1024m
\-XX:ReservedCodeCacheSize=512m
\-XX:+IgnoreUnrecognizedVMOptions
\-XX:+UseG1GC
\-XX:SoftRefLRUPolicyMSPerMB=50
\-XX:CICompilerCount=2
\-XX:+HeapDumpOnOutOfMemoryError
\-XX:-OmitStackTraceInFastThrow
\-ea
\-Dsun.io.useCanonCaches=false
\-Djdk.http.auth.tunneling.disabledSchemes=""
\-Djdk.attach.allowAttachSelf=true
\-Djdk.module.illegalAccess.silent=true
\-Dkotlinx.coroutines.debug=off


Could not reserve enough space for 2097152KB object heap

java -Xmx2048m -version 当前的JDK可以承受2048M,然后可以在IDEA的VM中配置 -Xmx2048m,就可以了

**解决办法: ** 开始->控制面板->系统->高级设置->环境变量->系统变量

新建变量:
变量名: _JAVA_OPTIONS   
变量值: -Xmx1G

java -Xmx2048m -version

Picked up _JAVA_OPTIONS: -Xmx1G
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) Client VM (build 25.144-b01, mixed mode)

idea writing classes 太慢

  • 首先:重新编译&构建jar

1.打开设置 File-->Setting… 2.修改配置

image.png

解决方法:

第一步:File--》Settings--》compiler,设置Build process heap size为2048

第一步:File--》Settings--》compiler--》ActionScript&Flex Compiler,设置Compiler heap size为2048

# Idea 启动项目时,卡在Parsing Java 解决方案

启动类增加:更大的堆内存 -Xms512m -Xmx2048m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m

升级JDK 版本到190及以上
java -version
Picked up _JAVA_OPTIONS: -Xmx1G
java version "1.8.0_144"

idea同一个项目打开两个窗口

image.png

idea2020 IDEA中报错 “Error running ‘Application‘: Command line is too long.“ 的解决办法

A、首先找到 .idea/libraies/workspace.xml 中的 ,此时的页面显示为:

B、需要的操作为: 在该组件中添加代码为: 即,此时的页面展示为:

C、此时在IDEA中就不再报错,此时就解决了该问题;

idea2022,启动springboot项目报以下错误:

Error running xxxxxxApplication. Command line is too long.
Shorten the command line via JAR manifest or via a classpath file and rerun.

解决办法

1.打开Shorten command line面板;

image.png

2.将none项改为"Jar manifest";

image.png

IDEA安装JProfiler插件

  1. 安装IDEA 插件 JProfiler image.png 2.安装后运行需要选择依赖组件(jprofiler_windows.exe)进行安装

image.png 下载地址:www.ej-technologies.com/download/jp…

服务启动 提升效率,降低耗时

启动速度主要的瓶颈在于bean的初始化过程(init,afterPropertiesSet方法的耗时) 很多中间件bean的初始化逻辑涉及到网络io,且在没有相互依赖的情况下串行执行。将这一部分中间件bean进行异步加载,是提升启动速度的一个探索方向。

解决方案

    1. 自动扫描可批量异步的中间件bean,而后,在bean的初始化阶段利用线程池并行执行其初始化逻辑。
    1. 允许使用方自行配置耗时bean以享受异步加速能力。(需使用方自行确认依赖关系满足异步条件)

Maven依赖冲突解决之exclusions ,缩减jar 大小

image.png

image.png

image.png

image.png

Maven依赖解决依赖冲突示例 commons-io

image.png

 
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>
  
    
    
    
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <exclusions>
        <exclusion>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </exclusion>
    </exclusions>
</dependency>
    

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <exclusions>
        <exclusion>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
    <scope>compile</scope>
    <exclusions>
        <exclusion>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>io.github.openfeign.form</groupId>
    <artifactId>feign-form-spring</artifactId>
    <version>3.2.2</version>
    <exclusions>
        <exclusion>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </exclusion>
    </exclusions>
</dependency>