zoukankan      html  css  js  c++  java
  • android studio 调试时内存溢出,闪退。

    最近遇到一个奇怪的问题,调试的时候出现闪退问题,抛出下面的异常。

    java.lang.OutOfMemoryError
    Could not allocate JNI Env

    百度了下有以下解释:

    OutOfMemoryError异常的常见原因有以下解释:

    1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
    2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
    3.代码中存在死循环或循环产生过多重复的对象实体;
    ————————————————
    版权声明:本文为CSDN博主「fish520water」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/fishandbean/article/details/92768745

    然后我检查了一遍又一遍的代码,问题还是没有得到解决。最后又通过百度搜索,了解到个解决办法,就是在AndroidMainifest.xml文件设置application的属性

    android:hardwareAccelerated="true"
    android:largeHeap="true"

    虽然问题解决了,但不知道这个什么意思,之后了解到,第一个属性是开启硬件加速(问题感觉不大),第二个是请求系统为Dalvik虚拟机分配更大的内存空间(总感觉不靠谱,所以又把这个去掉了。)

    后来我发现如果不通过Android studio进行调试,正常安装启动app是不会闪退的。然后无意间瞅到有个layout Intspector窗口,上面显示的就是app的画面。百度去了解了下这个是什么东西,并且先关了后再试了下调试。发现居然不会闪退了

    关闭相关设置

    最终问题解决了,原来是布局嵌套太多层,上传布局结构到pc,导致手机app出现大量内存的使用(占用了128m)

    解决这个问题的方法: 尽量不要出现太多层的布局嵌套(比如我:一个activity承载了四五个页面的能力,类似于单页应用,各个布局通过控制布局的visibility属性来显示/隐藏;后果就是一个xml:1500行臃肿代码。)

    或者调试的时候关闭ide的layout Intspector这个功能

  • 相关阅读:
    tableau学习笔记—1
    sql学习笔记1
    rpy2的安装问题?【解决】
    python_广州房价热力图
    数据清洗记录——.图书馆学号去敏
    python argparse
    利用torch.nn实现前馈神经网络解决 多分类 任务
    R7000P Ubuntu20.04 安装 Realtek 8852 无线网卡驱动
    邻接矩阵的相乘的意义
    分类问题中评价指标
  • 原文地址:https://www.cnblogs.com/Dmail/p/14976493.html
Copyright © 2011-2022 走看看