Android 内存飞踩导致数组的length属性变化的问题的一个定位思路

本文探讨了在编程过程中遇到的数组长度值异常变化的问题,通过详细的排查过程,最终定位到内存溢出导致的问题根源,并总结了解决此类问题的方法。

编程中发现我定义的一个数组的length的值会发生变化,有时会变为0,有时会变为其它值。

遇到这个问题之后,我首先想是不是我的数组大小没有分配或者分配的有问题,结果都不是,在网上查找帖子,寻找哪些情况可能会导致数组的length发生变化,得到的结论都是数组空间分配之后,其大小不能变化。然后陷入苦闷。

继续调,继续调,发现数组的大小只有在执行某段代码之后才会发生变化,并且是和该数组本身无关的代码。于是我想到的飞踩,果然在刚才的那小段代码中发现了内存问题。问题的根本原因是内存copy时,将多余的内容拷贝到了数组的后面,导致数组后面的空间被重写。

启示:

(1)数组的length发生改变得考虑飞踩。

(2)定位飞踩问题的可以使用排除法。对发生问题时已经执行过的代码块或者函数进行一一尝试,排除。如果发现将某个小的代码块加上之后,问题会出现,把小的代码块去掉之后,问题不会出现,那么该小段代码块就是发生代码飞踩的代码块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值