我是 Java 初学者,我刚刚开始使用 IntelliJ IDEA 作为我的 IDE。
我使用的时候有时会出现延迟。
我更改了
xms
和 xmx
以获取更大的堆大小(xms = 1024,xmx = 2048),但它会引发错误。所以,我把它回滚了。
错误消息是这样的:“初始堆大小设置为大于最大堆大小的值”。有什么问题吗?
如果可能,如何增加最大堆大小?
我使用的是笔记本电脑,内存为 8GB,使用 x64 IntelliJ.exe。
如果您在 2019.2 更新后在 InteliJ 中看到此错误,那是因为更新将 JVM XMX 值更改为 2048m,而没有检查相关值,这可能允许 XMS 变得大于无效的最大 XMX 值并创建该错误.
即 我的值是 XMX=6000m 和 XMS=4096m,但在 2019.2 更新后,它们是 XMX=2048m 和 XMS=4096m
您必须手动更改这些值,以便 XMS 等于或小于 XMX。 在 Mac 上,VM 选项文件为 ~/Library/Preferences/IntelliJIdea2019.2/idea.vmoptions
注意:该路径假设您使用的是 InteliJ 版本 2019.2。 如果出现以下情况,您将需要更改当前版本路径中的值
我在 Linux 上也遇到了同样的问题。配置文件位于
~/.IntelliJIdea2018.2/config/idea64.vmoptions
该目录将类似于 ~/.IntelliJIdeayyyy.n/config,其中 yyyy 是年份,n 是该年的发行号。
确保
-Xms
值高于 -Xmx
这是我在 8GB RAM 的 ubuntu 18.04 上的工作配置
# custom IntelliJ IDEA VM options
-server
-Xms4096m
-Xmx4096m
-XX:NewSize=1024m
-XX:MaxNewSize=1512m
-XX:NewRatio=1
-XX:+UseParNewGC
-XX:ParallelGCThreads=4
-XX:MaxTenuringThreshold=1
-XX:SurvivorRatio=8
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=65
-XX:+CMSScavengeBeforeRemark
-XX:+UseCMSInitiatingOccupancyOnly
-XX:ReservedCodeCacheSize=64m
-XX:-TraceClassUnloading
-ea
-Dsun.io.useCanonCaches=false
我在 MAC 中的 IntelliJ 中遇到了同样的问题。
IntelliJ 中有一个构建过程堆大小配置。您可以在
中找到此设置首选项 > 编译器 > 构建进程堆大小
确保 Xmx 值(在环境或虚拟机选项中)低于设置中的值。如果没有,请增加 IntelliJ 设置中的 Build Process Heap Size 或减少 VM 选项中的 Xmx 值。
默认情况下构建进程堆大小将为700m。
使用帮助| 编辑自定义虚拟机选项,仅将
-Xmx
值更改为 2GB
或您需要的任何值,-Xms
值应更低或相同。请注意,过高的堆可能会使 GC 暂停时间更长。
您的问题可能与内存设置根本无关。 本文档描述了报告性能问题的正确方法。您需要捕获 CPU 快照并将其提交给 JetBrains 支持或问题跟踪器。
对于 MacOS 上的 2024.1,我必须按照以下路径更新本地
idea.vmoptions
:
~/Library/Application Support/JetBrains/IdeaIC2024.1/idea.vmoptions