前言:筆者今天困擾於PhpStorm導致應用程序內存不足,速度像蝸牛一樣慢,排熱扇像拖拉機一樣瘋狂運轉,最後直接跳出超出使用內存750(默認是128m-750m) 彈窗。
通過Mac自帶的活動監視器發現
- mds_stores進程佔用6.5G(一開始以爲是筆者的docker容器和鏡像,後面說明)
- com.docker.supervisor 佔用內存2G(筆者使用docker環境開發)
- PhpStorm 佔用6.2G
一臉懵逼,我的Mac內存才8G,難怪Mac罷工,要是我我也罷工。哈哈😂
筆者再一步步通過調優,最後發現原因,還是將三次調優過程分享一下
二(2)爲解決方案
一、修改PhpStorm的配置文件
vi /Applications/PhpStorm.app/Contents/bin/phpstorm.vmoptions
-Xms512m
-Xmx2048m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=225m
-XX:+UseCompressedOops
修改後發現,的確是不會彈出使用內存750(默認是128m-750m) 彈窗,但是電腦速度一樣 so low!!!!!主要還是內存不足。
所以,這個方式適用於內存較大,想調優的同志了。
二、調優node_modules目錄(解決方案)
1、全局忽略node_modules目錄(項目中node_modules會消失不見,但其實還是存在,時時被忽略。可以本地運行,卻無法打包。)
操作很簡單,打開PhpStorm>>Preferences>>Editor>>File Types
在Ignore files and folders選填項裏添加node_modules,記得用分號隔開,保存並重啓項目後我發現,之前佔用在6G左右的PhpStorm佔用只有1.5G左右 。隱藏node_modules後,node_modules組件內的代碼提示當然就沒有了,不過本地npm run dev還是正常運行。
發現Mac整體安靜下來,不太鬧情緒。速度提上來了。但是筆者還是覺得難受,因爲如果打包準備要打包到線上的話,你會發現,打包不了會報錯,這適合本地開發暫時還未到上線程度的項目。
更優一步。
(解決方案)2、局部去除索引node_modules目錄(非忽略,在項目中還是可以發現node_modules目錄)
設置完成後再PhpStorm>>File>>invalidate Caches Restart清除緩存並重啓PhpStorm
三、mds_stores的釋放
之前就一直好奇mds_stores是哪個進程了。網上搜索發現“mds_stores”了這個是系統建立索引用的(有人說是升級到 macOS High Sierra 之後mds_stores卡頓次數更多),纔想起來最近Finder的搜索也有點不正常,搜不出東西來,升級之前就是這樣了。而索引支持Finder和Spotlight(Mac自帶工具)的搜索功能,當然咱們的代碼工具PhpStorm也是使用到索引(node_modules),這就是爲什麼第二步有起到作用!
我們現在要做的就是停止mds_stores進程
1、Terminal(終端)裏輸入命令:
sudo mdutil -a -i off
。
但這還不夠,還需要通過Mac自帶活動監控器手動殺死 mds_stores 進程。
2、再啓動:
sudo mdutil -a -i on
3、重啓
重啓PhpStorm
四、總結
由於node_modules體量較大,越大的項目,多開幾個。那麼PhpStorm就無法承載。第一步適用於內存較大,想調優的同志可以設置一下。第二步的操作是關鍵,第二步(2)操作node_modules使得索引壓力大幅度減少,每次開啓項目,就不會去主動建立node_modules的索引,不過就是會失去代碼提示這個功能,但是其實是可以接受的。在後續的開發,筆者將持續觀察是否長時間的起到作用吧~
還發現了一個不錯的博文。macOS 的 mds_stores 導致應用程序內存不足的故障解決記錄 大家可以參考一下