为什么80%的码农都做不了架构师?>>>
phpStorm一旦达到这个临界值,所有智能提示、自动补全都失效了
这TM就很尴尬了,顿时感觉自己就是个废人了,纯手写代码跟便秘一样
众所周知phpStorm基于JAVA,那么这个内存限制肯定跟JAVA的虚拟机参数有关
来到phpStorm的安装目录,例如我的安装目录是C:\Program Files (x86)\JetBrains\PhpStorm 2016.1\bin
找到PhpStorm.exe.vmoptions或 PhpStorm64.exe.vmoptions
64位系统用这个会好一些
在PhpStorm2017之后的版本中,修改bin目录下的vmoptions文件可能是无效的这时需要打开PhpStorm,
在顶部菜单中选择Help – Edit Custom VM Options然后修改其中的内容才行
使用任意文本编辑器打开,将里面的数字调大即可
添加和修改以下代码:
-
-Xms256m
-
-Xmx1024m
-
-XX:MaxPermSize=350m
-
-XX:ReservedCodeCacheSize=225m
-
-XX:+UseConcMarkSweepGC
-
-XX:SoftRefLRUPolicyMSPerMB=50
-
-ea
-
-Dsun.io.useCanonCaches=false
-
-Djava.net.preferIPv4Stack=true
-
-Dawt.usesystemAAFontSettings=lcd
-
-Dawt.java2d.opengl=true
-
-XX:+HeapDumpOnOutOfMemoryError
-
-XX:-OmitStackTraceInFastThrow
其实这时候需要使用64位版本的PhpStorm64.exe
比较好
双击PhpStorm64.exe
,提示需要64位的JDK
(如果你没安装过的话)
然而JAVA官网下到的都是JRE,搜索引擎搜出来的多半是JRE,更有打着JDK名号的JRE,要么就是32位的JDK
最后终于在这里找到个能用的。(P.S. 不要点那个大大的“立即下载”按钮,拉到下面找普通下载即可)
--------------配置文档中的参数说明-----------------------
phpStorm是使用JAVA开发的。由于IDE提供源文件关键字渲染功能,我们对文件的任何编辑或移动鼠标,都会触发渲染操作。而phpstorm默认的JAVA环境并没有利用机器的硬件加速技术去实现实时渲染,因此当然会让系统卡死。而只要在JAVA环境中让系统默认使用硬件加速,就可以解决占用系统资源过大,让phpstorm卡的问题了。
-
-Dawt.usesystemAAFontSettings=lcd //解决JDK出现Picked up _JAVA_OPTIONS
-
-Dawt.java2d.opengl=true //如果硬件加速已经被enable,可以通过这个选项来提高Swing GUI速度,默认值为false
-
-Xms256m //初始分配的堆内存
-
-Xmx1024m //最大允许分配的堆内存
-
-XX:MaxPermSize=350m //最大允许分配的非堆内存
其中堆内存和非堆内存的区别为:
Java虚拟机具有一个堆,堆是运行时的数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。在JVM中堆之外的内存成为非堆内存(Non-heap memory)
堆内存分配
初始分配的堆内存由-Xms指定,默认是物理内存的1/64;最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,Jvm就会增大堆直到-Xmx的最大限制;同理,空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此一般设置-Xms、-Xmx相等以避免每次GC后调整堆的大小。
说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try……catch捕捉
非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。