android 内存溢出的一些想法

news/2023/6/8 5:56:56

  对于android内存溢出这个问题,小编很是头痛!在这里说下小编自己的想法!

  首先内存引用分为强引用,弱引用,软引用,虚引用!

  强引用是一个实例引用,根据java的gc原理,如果存在引用,就无法自动回收,所以强引用必须在用完后使其=null

  ex:Object object = new Object();

     object = null;

  软引用是在强引用的基础上引用,使用Softreference进行引用,它是除非系统内存不足时才会回收,其它时候均不会回收,适合做cache;

  ex:

  Object object = new Object();

  SoftReference<Object>  objectSoft = new SoftReference<Object> (object);

  弱引用是可以随时获得某对象的信息,又不影响gc

  ex:  

   Object object = new Object();

  WeakReference<Object>  objectWeak = new WeakReference<Object> (object);

  虚引用就是没有的意思,建立虚引用之后通过get方法返回结果始终为null,虚引用通常会把引用的对象写进referent,只是get方法返回结果为null.

  Object object = new Object();

  PhantomReference<Object>  objectphantom = new PhantomReference<Object> (object,referenceQueue);(引用队列)

  在这里可以说明imagebitmap经常会出现内存溢出,不是手机内存不足,而是因为手机给应用分配的内存并不是所有内存,而是有限制,在这里一般将图片进行等比压缩。

  还有一个问题,android的应用层是使用java编写,而他的底层是由c编写,这就会造成一个问题,java有自动回收机制,而c语言没有。所以必要时需要手动催动回收机制!

  ex:

  if(bitmapObject.isRecycled()==false){

  bitmapObject.recycle();

  system.gc();//提醒系统及时回收,ps:仅仅是提醒,不会立即执行

}

  以上就是小编浅显的关于内存溢出的一些看法!


转载于:https://www.cnblogs.com/xiaoliboke/p/4872745.html


https://dhexx.cn/news/show-16812.html

相关文章

python设置全局变量_学Python编程不可不知:全局变量与局部变量

两者定义 接触过其他编程语言的&#xff0c;对变量肯定不陌生&#xff0c;而真正能理清楚全局变量与局部变量则又是一个层次的问题了。 从字面意思其实不难理解区分。全局表示在整个程序的所有代码块中可以被使用&#xff0c;而局部表示在某些特定的范围内才可以被使用。 这完全…

【视频传输】一、Opencv结合socket进行视频传输(TCP协议)

简介&#xff1a;紧接着上一篇文章&#xff1a;【一】Opencv结合socket进行视频传输&#xff08;TCP协议&#xff09;&#xff0c;我们趁热打铁&#xff0c;接下来在两台电脑之间进行视频的传输&#xff0c;化繁为简我们传输灰度视频。如确实还有问题&#xff0c;可以直接回复博…

理解 OpenStack + Ceph (4):Ceph 的基础数据结构 [Pool, Image, Snapshot, Clone]

本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成&#xff1a; &#xff08;1&#xff09;安装和部署 &#xff08;2&#xff09;Ceph RBD 接口和工具 &#xff08;3&#xff09;Ceph 物理和逻辑结构 &#xff08;4&#xff09;Ceph 的基础数据结构 &#xff08;5&…

I2S总线接口设计(Verilog)

I2S是数字音频的接口&#xff0c;这里不用多说&#xff0c;请读者自己查阅相关资料。 本文中要设计的是FPGA与数字音频芯片的I2S接口时序。简单点说&#xff0c;就是通过FPGA向音频芯片写数据&#xff0c;通过的是I2S总线&#xff0c;因为这个总线比较麻烦&#xff0c;我在这里…

kitti数据集_在KITTI数据集上训练YOLOv2-tiny(只识别car)

下面所有的所需工具都在我的github上下载https://github.com/zssjh/KITTI-yolov2-tiny​github.com一&#xff1a;训练集准备训练集下载地址&#xff1a;http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark2d​www.cvlibs.net需要下载12G的训练集图片和5m的…

科大奥瑞物理实验——法拉第效应

实验名称&#xff1a;法拉第效应 1. 实验目的&#xff1a; 了解磁光效应显现和法拉第效应的原理&#xff1b;测量磁至旋光角&#xff0c;了解费尔德定律&#xff0c;并利用费尔德定律θVBL&#xff0c;计算重火石玻璃的维尔德常数&#xff1b;熟悉磁光调制的原理&#xff0c;…

python2.7除法_Python2.7安装sympy模块

SymPy是Python版的开源计算机代数系统实现&#xff0c;是使用纯Python代码&#xff0c;没有第三方库。SymPy开发是Ondrej Certik从2006年8月开始的&#xff0c;此后不断有开发者加入项目&#xff0c;规模达到几百人。现在这个程序库包括26个模块&#xff0c;可以满足常用的计算…

python try用法_try,raise等的python的使用方法介绍

正常写代码时会遇到错误&#xff0c;导致错误之后代码无法继续&#xff08;错了为啥还要继续……界面友好呗&#xff0c;别让别人用着用着崩溃了……&#xff09;。所以提出了try...except&#xff08;这个java的tyy...catch很像&#xff09;。一个try至少带一个except&#xf…

linux命令监控dubbo请求,linux dubbo monitor监控中心安装

1.环境配置2.下载dubbo监控中心代码dubbo monitor监控中心代码下载地址&#xff1a;https://github.com/apache/incubator-dubbo/releases&#xff0c;找到dubbo-2.6.0并下载(可能并不是按版本号顺序所以要在下面找一找)3.编译打包dubbo monitor解压下载的dubbo-2.6.0.tar.gz&a…

summernote 字体名字不显示_王者荣耀怎么在游戏中输入空白名字 王者荣耀空白代码一览...

王者荣耀空白代码是什么&#xff1f;在王者荣耀中很多玩家都想使用空白的游戏名字却不知道该如何输入&#xff0c;下面就是小编为大家带来的空白代码了&#xff0c;不知道如何在游戏中输入空白名字的小伙伴们一起来看看吧&#xff01;王者荣耀空白代码是什么方法一&#xff1a;…