Android Studio - 如何增加分配的堆大小

145

我已经使用Android Studio三个月了,其中一个我在上面开始的应用程序变得相当大。该程序底部右侧指示的内存使用情况显示我的分配堆达到了494M的极限。

enter image description here

当我开始更改XML文件时,我的内存使用量很快就达到了那个上限,并且IDE崩溃并出现了类似于这样的内存不足错误。

enter image description here

我曾尝试使用此方法来增加堆大小,但迄今为止没有效果。

我浏览了几十篇关于如何增加堆大小的文章和其他问题,但它们的答案都不起作用。无论我对VMOPTIONS还是IDE设置做什么,堆大小都不会增加。我认为我正在编辑正确的VMOPTIONS文件,因为如果我故意给它一个无效命令,Android Studio会抱怨并且无法启动。

我正在使用Windows 7 - 64位,并且拥有16GB RAM。有其他人遇到过这个Android Studio的问题吗?你们能够解决吗?


请参考@moxi在下面的答案,了解有关配置用户特定设置以进行内存和工作室JVM启动的最新信息。https://dev59.com/62Ml5IYBdhLWcg3wDzVG#29057416 - Bron Davies
2
更新的Android Studio文档:https://developer.android.com/studio/intro/studio-config#adjusting_heap_size - Morrison Chang
25个回答

163

-------EDIT--------

如果您使用的是 Android Studio 2.0 或更高版本,则可以通过访问“帮助”菜单中的“编辑自定义 VM 选项”来创建/编辑此文件。

/Applications/Android\ Studio.app/Contents/bin/studio.vmoptions

将内容更改为

-Xms128m
-Xmx4096m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=200m
-XX:+UseCompressedOops

Xmx指定了Java虚拟机(JVM)的最大内存分配池,而Xms指定了初始内存分配池。您的JVM将使用Xms数量的内存启动,并能够使用最多Xmx数量的内存。

保存studio.vmoptions文件并重新启动Android Studio。

注意:

如果您更改了IDE的堆大小,则必须在新的内存设置生效之前重新启动Android Studio。(来源


2
这对我解决了一个很大的问题,因为在构建符号映射时,Android Studio会在15分钟后耗尽内存。我将Xms更改为1024m,将Xmx更改为4096,然后符号映射在不到30秒内就被构建出来了 - 因此垃圾收集器必须已经运行了很长时间。 - RikMaxSpeed
14
正如Lord Flash所提到的,从Android Studio 2.0开始,您可以通过在帮助菜单中访问“编辑自定义VM选项”来创建/编辑此文件。 - Lasse Magnussen
1
谢谢,这非常有用。 顺便提一下,如果您使用64位版本,则要编辑的文件名为studio64.exe.vmoptions。 - Eselfar
@RikMaxSpeed,你在项目中获得的堆大小最大是多少?我正在开发一个应用程序,需要大约1GB的堆大小来存储静态变量,以便随时可用。但是使用largeHeap不支持那么大的存储空间。它会在大约600MB左右抛出OutOfMemory异常,这是Android系统在运行时为我的应用程序提供的最大内存。 - Umair
1
增加Xmx并没有增加它!我仍然得到相同的错误提示框。 - Muhammad Sarim Mehdi

54

我查看了我的环境变量,发现一个名为_JAVA_OPTIONS的系统变量,其值为-Xms256m -Xmx512m。将其改为-Xms256m -Xmx1024m后,最大堆大小相应增加。


9
之前并不存在名为"_JAVA_OPTIONS"的系统变量,但我手动创建了一个新的,现在它可以正常工作了。谢谢。 - Yasir Ali
好的,这个可行!我在想增加堆大小是否是一件好事...我的意思是,它可以工作,在某些情况下肯定是正确的方法,但它总是正确的方法吗?或者可能有更好的解决方案吗?谢谢! - Marino
这个问题是否也与堆大小有关? - Sagar Devanga
我也无法工作,但结果是Android Studio让一些Java进程挂在前面的执行中,并且它们显然仍在使用大量内存。 - Alex Machado
只需将此行注释掉:org.gradle.jvmargs=-Xmx2048m - Abili Isaac

48

或者,您可以前往 android-studio\bin 文件夹,并在 studio.exe.vmoptionsstudio64.exe.vmoptions 文件中更改这些 -Xmx 和 -Xms 值(取决于您使用的是哪个版本)。


2
这对我没有起作用,因为_JAVA_OPTIONS变量被用作默认值。 - zafrani
这个可以运行,但现在每次启动AS都会出现防火墙对话框,我想是因为接触了应用程序文件使其签名失效了。 - http://superuser.com/a/328802/79666 - Daniel Lubarov
(据我所知,防火墙对话框只在OS/X上存在问题。) - Daniel Lubarov
1
https://extremegtx.wordpress.com/2015/01/08/android-studio-speed-up-studio-and-gradle/ - Bhavesh Hirpara
这是一个不好的想法,因为那可能会改变。如此在这里声明:https://sites.google.com/a/android.com/tools/tech-docs/configuration 使用适当的目录来进行自定义vmoptions。 - Paul Woitaschek
显示剩余4条评论

40
请勿编辑IDE安装目录中的任何文件。相反,您可以通过在以下目录中创建自己的.properties或.vmoptions文件来自定义属性。(在某些平台上以前就已经可以实现,但需要您复制并更改整个文件的内容。随着最新更改,这些属性现在是可添加的,因此您只需设置您关心的属性,其余部分将使用IDE安装的默认值)。
注意:从Android Studio 2.0开始,您可以通过从“帮助”菜单中访问“编辑自定义VM选项”文件来创建/编辑此文件。

http://tools.android.com/tech-docs/configuration

enter image description here


37

我按照Google的文档增加了我的内存:

http://tools.android.com/tech-docs/configuration

默认情况下,Android Studio被分配了最大750Mb的内存,我将其更改为2048Mb。

我尝试了Google所描述的方法,但对我来说,唯一有效的方法是使用环境变量。我会描述我所做的事情:

首先,我创建了一个名为.AndroidStudioSettings的目录,

  • mkdir .AndroidStudioSettings

然后我创建了一个名为studio.vmoptions的文件,并在该文件中放入以下内容:

-Xms256m 
-Xmx2048m 
-XX:MaxPermSize=512m 
-XX:ReservedCodeCacheSize=128m 
-XX:+UseCompressedOops 

然后我在我的 .profile 文件中添加了 STUDIO_VM_OPTIONS 环境变量:

  • export STUDIO_VM_OPTIONS=/Users/youruser/.AndroidStudioSettings/studio.vmoptions

接下来重新加载我的 .profile:

  • source ~/.profile

最后打开 Android Studio:

  • open /Applications/Android\ Studio.app

现在,通过 状态栏 可以看到,我有超过 2000 MB 可用于 Android Studio:

enter image description here

您可以根据需要自定义值,在我的情况下,2048MB 足够了。

更新:Android Studio 2.0 允许您通过从“帮助”菜单中访问“编辑自定义 VM 选项”来修改此文件,只需复制并粘贴您可能想要保留的变量以便为您的任何版本增加它。


这个解决方案只在从 shell 中打开 AS 时才有效吗? - guy.gc
你在终端中输入像 export STUDIO_VM_OPTIONS=/Users/youruser/.AndroidStudioSettings/studio.vmoptions 这样的命令时,是在哪里输入的? - COYG

16
你可以尝试以下任意一种方法:
1)更改gradle.properties文件,并根据您的要求更改堆大小。
如果org.gradle.jvmargs=-Xmx2048M不足,则更改为给定的4096。

org.gradle.jvmargs=-Xmx4096M enter image description here

2) 从帮助菜单中选择“编辑自定义VM选项”。

它将打开studio.vmoptions / studio64.exe.vmoptions文件。

enter image description here 将内容更改为

-Xms128m

-Xmx4096m

-XX:MaxPermSize=1024m

-XX:ReservedCodeCacheSize=200m

-XX:+UseCompressedOops

保存文件并重新启动Android Studio。


15

Android Studio 3.1 提供了编辑自定义虚拟内存选项的选项。

您可以前往 Android Studio > 帮助 > 编辑自定义 VM 选项

enter image description here

然后将以下设置代码粘贴到 studio64.exe.vmoptions 文件中并保存。

文件位置: "\Users\username\.AndroidStudio3.**\config\"

-Xms128m
-Xmx4096m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=200m
-XX:+UseCompressedOops

2
最后一行是错误的 - 如果存在,Android Studio 3.2会在启动时崩溃。 - CommonsWare

14
如果你正在使用MAC BOOK,此选项在应用程序->右键单击Android Studio然后选择显示包内容->bin中可用。

输入图像描述

或者

打开-e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions

然后增加Xmx的值。

-Xms128m
-Xmx2048m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=64m
-XX:+UseCodeCacheFlushing
-XX:+UseCompressedOops

现在你的Android Studio将会运行得非常快。


11
注意: 我知道这不是帖子的答案,但也许对于正在寻找答案的人有所帮助。

如果上述方法都不起作用,请在Mac上尝试以下操作,看看是否有所帮助。在最新版本的Android Studio中,studio.vmoptions位于应用程序文件夹中的AndroidStudio.app中。

因此,请右键单击或按住Ctrl键点击AndroidStudio.App,然后选择“显示包内容”,在其中找到studio.vmoptions:

Contents/bin/studio.vmoptions

替换或更改它,您将获得所需的所有RAM。

输入图像描述输入图像描述

致敬。


你不应该更改那个文件,而是更改这里指定的文件:http://tools.android.com/tech-docs/configuration。对于Mac用户:~/Library/Preferences/{FOLDER_NAME}/studio.vmoptions - GaRRaPeTa

7

我尝试了_JAVA_OPTIONS,但它对我仍然没有用。

最终,对我有用的是以下内容:

  • 启动studio64.exe而不是studio.exe(我的机器是64位)。
  • 在"studio64.exe.vmoptions"中添加/更改以下值:

-Xms2048m
-Xmx2048m
-XX:MaxPermSize=1024m
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled 
-XX:+HeapDumpOnOutOfMemoryError
-Dfile.encoding=utf-8


1
和你做的完全一样,我仍然遇到了内存不足的错误。 - Raphael Royer-Rivard
你更新到最新版本的Android Studio了吗?我正在使用Canary Channel,我已经安装了1.0 RC 4。 - ExpensiveBelly
不,我使用的是0.8.14版本,但我找到了内存泄漏的原因。在布局文件中创建一个名为“light_gray”的颜色并使用它会导致无限内存占用...但是“light_grey”就没问题。 - Raphael Royer-Rivard

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