Android Studio占用内存过多

210

我安装了Android Studio 1.0 RC 2,我的电脑内存有4GB,但是在启动Android Studio并运行Android模拟器后,只这两个程序就占用了超过90%的物理内存。有没有办法减少内存使用?由于这个内存问题,我无法同时打开其他应用程序。 输入图像描述


20
在一台4GB的Windows开发机上使用Eclipse或Android Studio和模拟器会非常困难。我强烈建议你要么升级开发机的RAM(8GB或更多),用设备进行测试(而不是模拟器),或者跳过IDE,使用纯文本编辑器和命令行工具进行开发。 - CommonsWare
2
我猜你是根据你发布的截图使用Windows。但是,你使用的是哪个版本的Windows呢?另外,由于Android Studio仍处于初期阶段,你可能会遇到很多问题。如果你不需要Gradle支持,你可以尝试一下Eclipse - 这个IDE经过多年的试验和测试,所以它对于开发环境来说非常稳定 - 从内存方面来看。 - ChuongPham
1
@CommonsWare 你知道 Linux PC 是否也是这样吗?提前感谢。 - Alexander Kulyakhtin
4
在Windows中,通过“管理工具|服务”选项关闭不必要的服务。进入“msconfig”并在“启动”选项卡中关闭不必要的应用程序。关闭Windows中不必要的视觉效果。运行Android模拟器时,特别是如果您有强大的图形卡,请打开“使用主机GPU”选项。我有一台Windows 7开发电脑,任何时候只使用2-2.5GB的RAM,包括:Windows 7,Eclipse,Mozilla Firefox(没有插件)和我刚提到的Windows自定义步骤。我还使用Fedora,并且它比Windows使用更少的内存。 - ChuongPham
3
只是一个观察:我看到你打开了一些谷歌浏览器标签页。你可能会发现,火狐浏览器使用更少的内存,因为它不会为每个标签页使用一个进程。 - Sam
显示剩余8条评论
13个回答

249

我目前在一台装有6GB RAM的Windows 8.1机器上运行Android Studio。

我发现禁用Android Studio中的版本控制系统(VCS),并使用外部程序来处理VCS可以显著提高性能。您可以通过转到文件->设置->插件并禁用以下内容来禁用VCS:

  • CVS集成
  • Git集成
  • GitHub
  • Google Cloud测试
  • Google Cloud工具核心
  • Android Studio的Google Cloud工具
  • hg4idea
  • Subversion集成
  • Mercurial集成
  • TestNG-J

21
没事,只是微小的改变。 - krivar
8
当你的项目配置了任何仓库,如SVN或GitHub,将会有很大的差别。我的执行等待时间从>3分钟降至<1分钟。非常感谢你的惊人帮助。 - Er. Kaushik Kajavadara
4
看起来这样做有效果并且有很大的改善,尽管我把“Git集成”保持开启状态。理想情况下,Android Studio应该将这些设置作为默认设置。 - Mr-IDE
3
我使用这种方法来处理装有4GB内存和AMD X4 CPU的HP 6005迷你机箱。在禁用了所有这些插件后,我的Android Studio打开速度非常快,我简直不敢相信。以前启动Android Studio需要15秒钟,但现在只需要1秒钟就可以打开。谢谢。 - SAYE
3
请关闭 Mercurial 集成和 TestNG-J。 - xiaoweiz
显示剩余10条评论

118

在我的情况下,内存占用有两个主要来源:IDE和Gradle:

Android Studio(高达1.5GB)

IDE的JVM已经配置了最大堆大小。您可以在主界面右下角看到此设置:

Android Studio showing 725M max heap size

您可以通过编辑相关的内存设置.vmoptions文件中减少这一点。例如,我将我的最大堆大小更改为512MB:

-Xmx512m

不幸的是,我发现降低这个值会导致Android Studio暂时冻结的频率增加,可能是因为进行垃圾回收。

Gradle(高达1.5GB)

开发一段时间后,Gradle也可能使用大量RAM。Windows将其显示为Java(TM) Platform SE Binary

Windows 8.1任务管理器显示"Java(TM Platform SE binary"正在使用1,460.5MB内存

您可以通过更改Gradle JVM选项来修复此问题。您可以通过编辑gradle.properties文件以每个用户为基础进行操作:

  1. 打开gradle.properties文件(如果不存在则创建):
    • Windows:%USERPROFILE%\.gradle\gradle.properties
    • Linux/Mac:~/.gradle/gradle.properties
  2. 更新org.gradle.jvmargs属性,如有必要,请创建它。 我将我的设置为以下内容:

    org.gradle.jvmargs=-Xmx256m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    
    我将最大堆大小设置为256MB(-Xmx256m),对于我的小项目构建性能没有任何区别。
    请注意,您可能需要重新启动Android Studio以杀死旧的Gradle进程;否则,您可能会同时运行两个进程。

    模拟器

    关于模拟器占用大量RAM的问题,您的截图显示它占用了约800MB。 您可以选择为模拟器分配多少RAM:
    1. 编辑AVD
    2. 显示高级设置
    3. 减少RAM的值

    Android Virtual Device RAM configuration


这个与SoJexy的答案结合起来,显著提高了我的电脑性能。 - Josh Larson
这些提示真是救了我一命!还有一个选项可以更改dex编译器使用的堆大小,进一步减少内存使用。详情请见:http://techzog.com/development/android-studio-high-ram-usage/ - Varun
1
.vmoptions文件中,它说:“请勿直接修改此文件。如果您想要添加某个值,请将其添加到您的用户特定配置文件中。请参见http://tools.android.com/tech-docs/configuration”。然而,由于我的系统上似乎没有用户特定文件,并且该网站也没有解释任何其他此类文件的位置,因此我将采用此解决方案。 哦,还有:MaxPermSize将在某个时候被弃用。每次在终端启动IDE时都会警告我。 - Zelphir Kaltstahl
1
@Zelphir,你使用的是哪个操作系统和Android Studio版本?我正在使用Windows,说明中说文件在%USERPROFILE%下,这是特定于用户的。我不太擅长Linux,但Mac和Linux的说明也说文件在~下,我猜这是用户的主目录?如果文件不存在,也许你可以创建它;上面提到的文档说:相反,您可以通过在以下目录中创建自己的.properties或.vmoptions文件来自定义属性。。如果它起作用了,你能告诉我一声吗?这样我就可以更新答案了。 - Sam
3
好的建议!关于Gradle,我通过编辑 ~/.gradle/gradle.properties 文件以“用户范围”方式解决了该问题。 - Andrea Lazzarotto
显示剩余5条评论

54

您可以加速 Eclipse 或 Android Studio 的工作,只需按照以下步骤:

  • 一次只打开一个项目
  • 每次在模拟器中运行应用程序后,请清理项目
  • 使用移动设备或外部设备代替模拟器
  • 不要在使用后关闭模拟器,每次运行应用程序时使用相同的模拟器
  • 通过使用 文件->设置->插件 禁用以下内容来禁用版本控制系统(VCS):
    1. CVS 集成
    2. Git 集成
    3. GitHub
    4. Google Cloud Tools for Android Studio
    5. Subversion 集成

我也使用了 4GB 安装主内存的 Android Studio,但遵循这些步骤真的可以提高我的 Android Studio 性能。


1
我已经禁用了列表中的所有内容,但它仍然使用大约1.5GB的内存。 - Arshad
@arshadkazmi42,请告诉我你的电脑配置。 - KulArtist
i3,4GB RAM,500GB HDD - Arshad
@arshadkazmi42 这是因为 i3 处理器的问题。Android Studio 只适用于高于 i3 处理器的电脑。 - KulArtist
14
我认为声称“i3”是软件工艺失败的根本原因是完全荒谬的! - XMight
1
我的i3处理器想挑战你的>i3,你想接受这个挑战吗?没有人会说i3导致速度变慢或占用高内存... - Sabir Hossain

32

Android Studio最近发布了面向低内存机器的官方指南:指南

如果你的机器配置低于推荐要求(参见系统要求),你可以按照以下方式自定义IDE以提高其在你的机器上的性能:

  • 减少可用于Android Studio的最大堆大小:将Android Studio的最大堆大小降低到512Mb。

  • 升级Gradle和Gradle Android插件:升级到最新版本的Gradle和Gradle Android插件,以确保你能够充分利用最新的性能改进。

  • 启用省电模式:启用省电模式可以关闭许多内存和电池密集型的后台操作,包括错误高亮、即时检查、自动代码完成和自动增量后台编译等。要启用省电模式,请单击 文件 > 省电模式。

  • 禁用不必要的lint检查:要更改Android Studio在你的代码上运行哪些lint检查,请按照以下步骤进行: 单击 文件 > 设置(在Mac上为 Android Studio > 首选项)以打开设置对话框。在左侧窗格中,展开“编辑器”部分,然后单击“检查”。单击复选框以选择或取消选择适用于你的项目的lint检查。单击“应用”或“确定”以保存更改。

  • 在物理设备上调试:在模拟器上进行调试比在物理设备上进行调试使用更多内存,因此你可以通过在物理设备上进行调试来提高Android Studio的整体性能。

  • 仅包含必要的Google Play服务作为依赖项:将Google Play服务作为项目的依赖项包含在内会增加所需的内存量。只包含必要的依赖项以改善内存使用和性能。有关更多信息,请参见将Google Play服务添加到你的项目中。

  • 减少DEX文件编译的最大堆大小:将DEX文件编译的javaMaxHeapSize设置为200m。有关更多信息,请参见通过配置DEX资源提高构建时间

  • 不要启用并行编译:Android Studio可以并行编译独立模块,但如果您的系统内存较低,则不应该开启此功能。要检查此设置,请按如下操作进行: 单击File > Settings(在Mac上,是Android Studio > Preferences)打开设置对话框。在左侧窗格中,展开Build, Execution, Deployment,然后单击Compiler。确保未选中Compile independent modules in parallel选项。如果您已经做出了更改,请单击Apply或OK以使更改生效。

  • 为Gradle开启离线模式:如果您的带宽有限,请开启离线模式,以防止Gradle在构建过程中尝试下载缺失的依赖项。当离线模式开启时,Gradle会发出构建失败信息,如果您缺少任何依赖项,而不是尝试下载它们。要开启离线模式,请按如下操作进行:

    • 单击 File > Settings(在Mac上,是Android Studio > Preferences)打开设置对话框。

    • 在左侧窗格中,展开Build, Execution, Deployment,然后单击Gradle。

    • 在全局Gradle设置下,选中离线工作复选框。

    • 单击Apply或OK以使更改生效。


  • 17

    我使用了Sam上面提到的所有建议,但我发现VM命令行选项不再按描述支持。(当我使用时会收到错误)

    作为替代方案,我能够通过在“gradle.properties”文件中添加以下行来大大减少Gradle的大小。

    org.gradle.jvmargs=-Xms512m -Xmx1024m
    

    自A.S. ver 1.3起,该文件位于与"gradle.build"相同的文件夹级别中。

    以上配置为512兆的"内存堆栈"和1024兆的"内存堆"。

    我在一个小项目上进行了测试,使用设置将两个内存大小都设置为256兆。这如预期地限制了JVM大小。在所有测试中,我都重新启动了A.S.以强制重启JVM。

    希望这能让其他人避免得到那些"买一台更好的电脑"的回复。 :-)

    Dilber


    谢谢,这在AS 1.3中对我有效!我更新了我的答案中的说明,以涵盖此方法,因为我没有找到其他在AS 1.3中实现它的方式。 - Sam

    4
    你可以在Android Studio中调整IDE和Gradle守护进程的堆大小。
    请阅读并按照IDE设置屏幕中的说明进行操作:

    Android Studio memory settings

    另外,请查看Android开发者网站上的此页面


    3

    在低配置机器上运行Android环境。

    1. 关闭浏览器中不必要的网页标签
    2. 对于使用杀毒软件的用户,请将自动生成的build文件夹排除在外
    3. Android Studio默认堆大小为1.2 GB,可以降低到512 MB

    帮助 > 编辑自定义VM选项

    studio.vmoptions
     -Xmx512m
    

    布局性能将被提升

    1. 对于Gradle来说,它是Android Studio中的核心组件之一,请确保像现在这样使用最新版本3.0beta

    以下提示可能会影响代码质量,请谨慎使用:

    1. Studio包含电源安全模式,打开后会关闭后台操作,如lint、代码完成等。

    2. 您可以在需要时手动运行lint检查./gradlew lint

    3. 大多数人都在使用Android模拟器,平均消耗2 GB RAM,因此如果可能,请使用实际的Android设备,这将减轻计算机的资源负载。或者,您可以减少模拟器的RAM,这将自动减少计算机上的虚拟内存消耗。您可以在虚拟设备配置和高级设置中找到此选项。

    4. Gradle离线模式是为带宽有限的用户设计的功能,可以禁用构建依赖项的下载。它将减少后台操作,从而有助于提高Android Studio的性能。

    5. Android Studio提供了一种优化方法,可以并行编译多个模块。在低RAM机器上,此功能可能会对性能产生负面影响。您可以在编译器设置对话框中禁用它。


    "studio.vmoptions -Xmx512m" 这个设置让我的Android Studio崩溃了。现在无法打开,提示“无法创建JVM:错误代码-1”。我该如何撤销这个更改? - MeatPopsicle
    1
    如果其他人也遇到了同样的问题,你可以通过前往 C:\Users<username>.AndroidStudio<version>\config 并查找 .vmoptions 文件来解决它。如果它与你刚刚添加的配置相匹配,那么你可能可以安全地将其删除。 - MeatPopsicle

    2
    为了减少延迟,我建议采取以下步骤:
    我的电脑配置:2GB内存,处理器:Intel Core2 Duo。
    首先,结束所有后台进程,如果你正在运行服务器或数据库,可以使用以下命令先停止它们:
    sudo service apache2 stop sudo service mysql stop 然后,在Android Studio中启用省电模式,方法是:文件>省电模式。
    这样可以禁用后台进程,让Android Studio运行更加流畅。

    不理解为什么我们需要启用“省电模式”。 - Morozov
    Morozov,如果我们启用省电模式,它会杀死Android Studio的后台活动,从而提高其性能。 - Naveen
    是的,省电模式会停止这些进程。 - Naveen

    2
    尝试将您的JVM切换到Eclipse OpenJ9,它会使用更少的内存。我已经切换了它,它一直在使用600MB的内存。"最初的回答"

    2

    我有Android Studio 2.1.1。我的朋友使用genymotion模拟器,如果使用Android Marshmallow操作系统,它会更快。而我的电脑内存是4GB。为了在Android Studio中使用genymotion,您需要安装插件。如果您不想浪费时间启动Android模拟器(需要5分钟),您可以试试genymotion,它只需要10到20秒就能运行,速度更快。因此,我建议您使用genymotion。


    3
    就像是免费的。 - Ojonugwa Jude Ochalifu
    Genymotion在性能方面并不更快。模拟器是,但是它比ARM启动更快,比IntelX86和X64的Android Studio模拟器更快。 - Mahdi-Malv

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接