Jvm PHPStorm/Webstorm将内存增加到512MB以上

Jvm PHPStorm/Webstorm将内存增加到512MB以上,jvm,out-of-memory,phpstorm,webstorm,windows-7-x64,Jvm,Out Of Memory,Phpstorm,Webstorm,Windows 7 X64,我正在使用PHPStorm和64位Java(我猜是最新版本)一起使用Win7 64位下的PHPStorm,目前正在处理一个非常大且混乱的项目。有许多类包含10k LOC及更多。因此,我的PHPStorm偶尔会耗尽一次内存 我得到了一个很好的内存不足的对话框,建议增加我的内存设置。我当前已在我的PhpStorm.exe.vmoptions中设置: -server -Xms128m -Xmx512m -XX:MaxPermSize=250m -XX:ReservedCodeCacheSize=64m

我正在使用
PHPStorm
64位Java(我猜是最新版本)
一起使用
Win7 64位
下的
PHPStorm
,目前正在处理一个非常大且混乱的项目。有许多类包含
10k LOC
及更多。因此,我的
PHPStorm
偶尔会耗尽一次内存

我得到了一个很好的
内存不足的
对话框,建议增加我的内存设置。我当前已在我的
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位)。您可以在
帮助| About
中进行检查

一般来说:对于64位Java,您不必更改该值,因为它的工作方式与32位Java有一点不同

1)PhpStorm附带了捆绑的x86java,它是第一个尝试的;只有这样,它才会查找其他Java安装—检查
PhpStorm.bat
以了解详细信息(哪些环境变量以及顺序)。通过定义其中一个环境变量(它将指向您的64位Java安装),您可以告诉PhpStorm使用它,而不是捆绑使用它

2)PhpStormv8(目前处于EAP阶段)附带64位特定文件:您应该使用
PhpStorm64.exe
,而不是
PhpStorm.exe
(与
.vmoptions
文件相同——它应该是
PhpStorm64.exe.vmoptions

我不确定PHPStormV7如何与64位Java一起工作——我自己从未尝试过这种方式


选择IDE将运行的JDK版本


PhpStorm 2016.1及更新版本

从PhpStorm 2016.1开始,应使用指向JVM路径的
JAVA\u HOME
环境变量,而不是
WEBIDE\u JDK\u 64

PhpStorm 2016.1之前的版本

正如@LazyOne的回答中提到的,从phpstormV8(已经发布)开始,您可以使用PhpStorm64.exe。但是我找不到任何关于如何为它指定JVM路径的描述。解释如何选择JDK版本的文档似乎有点过时

经过一些研究,我发现应该创建
WEBIDE\u JDK\u 64
环境变量,该变量应该指向JRE 64位安装路径。完成此操作后,您将能够启动PhpStorm64.exe


默认情况下,它将最大内存设置为
750mb
。如果需要更多,可以修改
C:\ProgramFiles(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
设置为更高的值。

阅读本文后,我切换到64位版本(安装正确的JDK后)并将指定内存增加到2GB以关闭它。但我还是达到了极限,冻结等


最终意识到,我跟踪了我的
bower\u组件
文件夹。这样的文件夹包含大量javascript文件et.c。将基本上吃掉世界上所有的ram(我还排除了
node\u模块
folder now,同样的故事)。因此,我右键单击文件夹>将目录标记为>排除。经过一些垃圾收集后,PhpStorm的内存占用降低到了5-600mb,这似乎是合理的。

我在应用程序中发现了一个日志文件,由于一个bug,它在几秒钟内从几KB增长到了2 GB以上。Webstorm试图索引此2GB日志文件,但内存不足。删除日志文件解决了问题(然后修复错误,阻止日志文件增长)


在此之前,我还尝试运行x64jdk并将XMX增加到2048。但最终,拥有2048MB的64位环境是不够的(尽管以前512MB总是足够)

更改PHPStorm的内存设置现在有一个菜单选项:

简单地
文件
使缓存无效/重新启动…
对我来说很有用。您确定您使用的是64位Java吗?关于所使用的Java版本,“Help | About”是怎么说的?“我在谷歌上搜索过,但似乎没有人希望内存超过512MB”——没错,GC会很烦人。wtf…你说得对,它说的是java x86。为什么PHPStorm不使用系统上安装的主java?因为1)PHPStorm附带了捆绑的x86Java,并且是它第一次尝试的;只有这样,它才会查找其他Java安装—检查
PhpStorm.bat
以了解详细信息(哪些环境变量以及顺序)。2)应该使用
PhpStorm64.exe而不是
PhpStorm.exe
(与
.vmoptions
文件相同——它应该是
PhpStorm64.exe.vmoptions
注意:我说的是phpstormV8(目前处于EAP阶段),而不是v7——它没有那些64位特定的文件。啊!好吧……嗯:)v8是否足够稳定以使用它?我似乎一点也不喜欢64位。我添加了
WEBIDE_JDK
environment var,现在当我想启动程序时什么都没有发生…--也许你提供了错误的路径?我很确定我有正确的路径…但是v8似乎可以工作,我可以操纵内存设置!你知道吗