【问题标题】:Error, probably about memory错误,可能与内存有关
【发布时间】:2015-10-16 23:56:36
【问题描述】:

所以我正在测试我的应用程序,并且在某一点出现错误,我看到了堆栈跟踪,它位于我什至没有更改的行上,并且它之前可以正常工作。但是查看堆栈跟踪我认为问题是内存不足。 这是错误所在的行(在 setContentView.. 行中)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_agencia_figueira);

    Button buttonFigueira = (Button) findViewById(R.id.buttonMenu);
    buttonFigueira.setOnClickListener(
            new Button.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(agenciaFigueira.this, MainActivity.class);
                    agenciaFigueira.this.startActivity(i);
                }
            }
    );

但堆栈跟踪的其中一行是:无法分配 10603020 字节分配,4194304 个空闲字节和 7MB 直到 OOM

如果是内存不足,我该如何解决? :x

【问题讨论】:

  • 从 logcat 发布完整的堆栈跟踪
  • 这听起来很合理:错误说您尝试分配 10MB,但只有 419K 字节可用。问:回溯是否准确显示了您尝试分配的内容?理解这一点是解决问题的关键。,
  • 我是这个 * 的新手,我怎么能把漏洞堆栈跟踪放在这里?我尝试了与输入代码相同的方式,但给了我一个错误:x
  • 我闻到一个大图像被加载为该 xml 中的图像视图资源。
  • 但即使这是我不明白的问题.. 我有一堆图像,这是真的。但是一个应用程序不是应该有更多的内存吗?由于一堆图像,我的内存不足 O.o 越复杂的应用程序会发生什么?他们怎么会有记忆? :P

标签: android memory android-studio out-of-memory


【解决方案1】:
  1. 您绝对需要重新检查您的堆栈回溯...并可能添加调试语句...以确定您要求 10MB 的确切位置(并且失败)。在确定解决方案之前,您需要确定特定资源

  2. 如果您使用的是仿真器……那么您就可以指定图像的内存大小(这通常是物理手机无法做到的)。确保模拟器具有“合理”数量的 RAM。 512MB 通常是一个不错的数字。

  3. Android Studio 有优秀的 工具用于检查内存利用率。例如:

https://developer.android.com/tools/debugging/debugging-memory.html

  1. 请发回您找到的内容!

【讨论】:

  • 在哪里可以看到我的模拟器的内存?我看到了细节,关于 ram 唯一的东西是 hw.ramSize: 1536,那是什么? :b 还有一个问题,让我们看看我的模拟器无法分配这么多内存,因为缺少内存,如果我使用真实设备,如果我用 USB 连接手机并在那里尝试,我不会再有这个问题了?
  • 再次重申:主要是您需要在故障点确定您尝试分配的特定资源!问:追溯告诉你什么?问:你试过调试监视器吗?你发现了哪些“记忆猪”?仅供参考,hw.ramSize 1536 为 1.5GB:developer.android.com/tools/devices/managing-avds.html.