2016年4月29日 星期五

Android Studio 2.0 舊電腦記憶體調整記錄

我的一台雙核心4G ram 的老舊電腦,近日執行android studio, 編譯或執行的時候, 有時會慢到整個電腦都卡住的感覺, 查看電腦的ram, 發現studio本身大概最多會佔到800M的空間, 但執行編譯時, 有個java.exe 經常會佔到2G以上的空間, 只要發生這種情況, ram的佔用率大概就是99%左右. 然後就算編譯個一個小時, 也跑不出結果來, 我猜想可能是記憶體佔用太高了, 造成系統整個卡死了, 所以開始嘗試解決的方法.

我主要是參考以下這篇: 照著調整完以後, 果然有效, 調整之後, 新編譯的時間, 降低到十到十五分鐘可完成, 配合instant run, 勉強可以用來開發android 的 app.

Android studio takes too much memory

第一部分

首先, 先減少android studio 本身所佔有的ram, 到File/Settings/Plugins 內把以下的部分disable 掉. 

  • CVS Integration
  • Git Integration
  • GitHub
  • Google Cloud Testing
  • Google Cloud Tools Core
  • Google Cloud Tools for Android Studio
  • hg4idea
  • Subversion Integration
然後修改.vmoptions  這個檔. 把max heap size 改成 512MB:
-Xmx512m, 但是據原作者說, 改這個會造成Android Studio 有lag的現象, 所以我沒有改這一項. 

第二部分

改Gradle所佔有的ram, 在工作管理員中, 看到的java.exe, 據原作者說, 就是Gradle所佔用的記憶體. 它經常會在build程式碼的時期, 佔用將盡2G的空間, 修改方法如下


1.打開Android Studio 相關的project

2.在 Gradle Scripts之下, 打開gradle.properties這個檔, 把org.gradle.jvmargs=開頭的這一行的註解符號拿掉, 因為不加這一行限制的話, 它的預設是10248m,我有沒有看錯, 那不就是10G嗎? 我將它改成 -Xmx1024m, 原作者是改成只有256m, 據他說:改成256m也看不出對效能有何影響. 我想先給1G, 如果記憶體還是不夠, 再回來改小一點. 原作者還說改完這一項要重開Android Studio, 確定舊的process被kill掉, 套用新的設定.(如果改成512m, 會造成產生 release 版的 apk 時, ram 不足的現象, 出現java.lang.OutOfMemoryError: Java heap space, 所以還是改回1G)


第三部分 修改avd模擬器的ram大小, 這部分我原來就只有512M, 所以沒有更改. 

第四部分 是原文沒有提到的部分, 那就是dex 的Max HeapSize, 因為我照著上面修改之後, 速度還是很慢, 沒什麼改變. 觀察工作管理員, 還是有一個佔大約2G的java.exe項目, 我就想著這個佔2G的東西到底是什麼, 我想到在build.gradle裡曾設定如下:


dexOptions {
    javaMaxHeapSize "4g"}





於是我就把4g改成1g, 果然改過之後, 那個工作管理員上, 原來是2G(雖然我原來設4g, 但實際上2G可能是極限了, 因為我全部記憶體也才4G而已)的java.exe, 立刻變成1G, 但是即使如此速度還是很慢, 於是我又把1G改成2G, 速度才有所提升. 因此我想也不能改太小, 2G太概就是理想值吧! 

  © Blogger templates Psi by Ourblogtemplates.com 2008

Back to TOP