【问题标题】:How to increase android virtual device max heap size?如何增加android虚拟设备最大堆大小?
【发布时间】:2012-12-23 08:04:12
【问题描述】:

我想用 Eclipse 增加 android 虚拟设备映射堆大小。我尝试在 Eclipse AVD 管理器中将 Max VM 应用程序堆大小设置为 128,但它不起作用,无论设置的堆大小如何,Runtime.getRuntime().maxMemory()/(1024*1024); 行总是返回 48。设备内存大小设置为 512。选定的目标是 Android 4.1.2(API 级别 16)。此外,我在清单文件中设置了android:largeHeap="true"

最大堆大小是否有限制(128MiB 多吗?),或者是否有其他文件要编辑或要设置参数?

【问题讨论】:

标签: android size heap-memory emulation


【解决方案1】:

为此,在 Eclipse 中,转到“调试配置”。您可以在“调试”图标下的下拉菜单中找到它。选择“目标”,然后选择要启动的首选模拟器目标。然后在“其他模拟器命令行选项”下添加:

-分区大小 128

然后关闭模拟器(并移除所有设备),然后单击调试图标,这将启动您选择的首选模拟器。这很重要:Eclipse 需要启动调试器,而不是 AVD。

请注意,大小 (128) 以兆字节为单位。

也可以在这里查看:http://viralpatel.net/blogs/jvm-java-increase-heap-size-setting-heap-size-jvm-heap/

或者:在 VM 选项中增加 AVD RAM 和最大 VM 应用程序堆大小: 转到窗口--> AVD 管理器--> 虚拟设备--> 编辑。

【讨论】:

  • 我尝试在命令行选项中添加 -partition-size 参数,但结果保持不变:最大堆大小似乎为 48 MiB。而且我已经设置了 AVD 选项,但没有效果。
  • 好的,VM 堆大小如何(我回答的最后一点。)
  • 嗯,奇怪。您确定在读取最大内存时获得了正确的值吗?
  • Max VM application heap size 参数设置为 128,Device ram size 设置为 512。但Runtime.getRuntime().maxMemory() 仍返回 48 MiB。我使用Log.v("Utils", "Max mem in MB : " + (Runtime.getRuntime().maxMemory()/(1024*1024))); 来获得最大内存。我想它应该返回良好的价值?
  • 也可以设置vm的最小堆大小:java -Xms64m -Xmx256m HelloWorld
【解决方案2】:

使用以下代码。我想这会对你有所帮助:

VMRuntime.getRuntime().setMinimumHeapSize(4 * 1024 * 1024);

【讨论】:

    【解决方案3】:

    在 Manifest 文件中添加大堆

    <application
    
            android:icon="@drawable/example"
            android:label="@string/app_name" 
            android:largeHeap="true">
    
          ......
          ......
    
    </application>
    

    【讨论】:

      【解决方案4】:

      您不能动态增加堆大小。

      您可以通过在清单中使用 android:largeHeap="true" 来请求使用更多,但您可能不会获得比正常更多的堆大小,因为这只是一个请求。

      此外,您可以使用本机内存,因此您实际上绕过了堆大小限制。

      这里有一些关于它的帖子:

      这是我为它制作的一个库:

      【讨论】:

        猜你喜欢
        • 2013-02-18
        • 2010-11-16
        • 1970-01-01
        • 2014-02-02
        • 1970-01-01
        • 2014-10-15
        • 2013-01-01
        • 1970-01-01
        相关资源
        最近更新 更多