我正在
PHPStorm
下使用 Win7 64bit
和 64bit Java (latest version I guess)
,目前正在处理一个非常大且混乱的项目。有很多类包含 10k LOC
等等。因此我的PHPStorm
偶尔会出现内存不足的情况。
我收到这个漂亮的
Out-of-Memory
对话框,建议增加我的内存设置。我目前已在我的PhpStorm.exe.vmoptions
中设置:
-server
-Xms128m
-Xmx512m
-XX:MaxPermSize=250m
-XX:ReservedCodeCacheSize=64m
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
问题是:当我增加此文件中使用的内存时,启动程序时出现以下错误:
创建 JVM 失败:错误代码-4
我用谷歌搜索了一下,但似乎没有人希望记忆比512MB
更
更多。
有人知道我可以做什么才能再次使用 PHPStorm 而不遇到任何麻烦吗?
当然,我可以重置缓存,但这不是永久解决方案,对吧?
我在某处读到,将这一行添加到我的
vmoptions
中是个好主意,但我没有看到任何区别:
-server
....
-XX:MinHeapFreeRatio=15
确保 PhpStorm 使用 64 位 Java,而不是捆绑 Java(32 位)。您可以在
Help | About
中进行检查。
一般来说:对于 64 位 Java,您不必更改该值,因为与 32 位 Java 相比,它的工作方式有点不同。
1) PhpStorm 附带捆绑的 x86 Java,这是它尝试的第一个;然后它才会查找其他 Java 安装 - 检查
PhpStorm.bat
了解详细信息(什么环境变量以及顺序)。通过定义这些环境变量之一(它将指向您的 64 位 Java 安装),您可以告诉 PhpStorm 使用而不是捆绑的环境变量。
2) PhpStorm v8(目前处于 EAP 阶段)附带 64 位特定文件:您应该使用
PhpStorm64.exe
而不是 PhpStorm.exe
(.vmoptions
文件相同 - 应该是 PhpStorm64.exe.vmoptions
) .
我不确定 PhpStorm v7 如何与 64 位 Java 一起工作——我自己从未尝试过这种方式。
选择 IDE 将运行的 JDK 版本
读完这篇文章后,我切换到64位版本(安装正确的JDK后)并将指定内存增加到2GB只是为了关闭它。但我还是碰到了天花板,冻结等等
最终意识到,我的
bower_components
文件夹已被跟踪。像这样的文件夹包含大量的 javascript 文件等。基本上会吃掉世界上所有的内存(我现在也排除了node_modules
文件夹,同样的故事)。所以我右键单击node_modules
文件夹>将目录标记为>排除。经过一些垃圾收集后,PhpStorm 的内存占用量减少到 5-600mb,这似乎很合理。
PhpStorm 2016.1 及更高版本
从 PhpStorm 2016.1 开始,应该使用指向您的 JVM 路径的
WEBIDE_JDK_64
环境变量,而不是 JAVA_HOME
。
PhpStorm 2016.1 之前的版本
就像@LazyOne的答案中提到的那样,从PhpStorm v8(已经发布)开始,您可以使用PhpStorm64.exe。但我找不到任何关于如何为其指定 JVM 路径的描述。解释如何选择JDK版本的文档似乎有点过时了。
经过一番研究,我发现您应该创建
WEBIDE_JDK_64
环境变量,该变量应指向 JRE 64 位安装路径。完成此操作后,您将能够启动 PhpStorm64.exe。
默认情况下,它将最大内存设置为
750mb
。如果需要更多,可以修改C:\Program Files (x86)\JetBrains\PhpStorm 8\bin\PhpStorm64.exe.vmoptions
。然而,更好的主意是编辑用户的 vmoptions 文件。只需将 C:\Program Files (x86)\JetBrains\PhpStorm 8\bin\PhpStorm64.exe.vmoptions
复制到 %USERPROFILE%\.IntelliJIdea12\idea.vmoptions
并将 -Xmx750m
设置为更高的值即可。
简单地
File
> Invalidates Caches / Restart...
对我有用。 👌😀
Help -> Change Memory Settings -> Update Maximum Heap Size
至所需值。这对我来说解决了问题。
我发现应用程序中的一个日志文件由于错误而在几秒钟内从几 KB 增长到超过 2 GB。 Webstorm 试图索引这个 2 GB 的日志文件,但内存不足。删除日志文件解决了问题(然后修复错误阻止日志文件增长)。
在此之前我也尝试过运行 x64 JDK 并将 XMX 增加到 2048。但最终 2048 MB 的 64 位环境是不够的(尽管之前 512 MB 总是足够的)。