首页 / JAVA / java-复制位图到位会泄漏内存吗?
java-复制位图到位会泄漏内存吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-复制位图到位会泄漏内存吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1207字,纯文字阅读大概需要2分钟。
内容图文
![java-复制位图到位会泄漏内存吗?](/upload/InfoBanner/zyjiaocheng/945/556ea663ab5a4993bf557df53cdac6d1.jpg)
我很好奇以下代码是否会泄漏…
data = getBitmapdataFromCameraCallback();//this is immutable, so...
//make a mutable copy...
originalUserPhoto = BitmapFactory.decodeByteArray(data, 0, data.length).copy(Config.ARGB_8888, true);
Matrix matrix = new Matrix();
// -1 doesn't reverse it for some oddball reason, so, we get REALLY close to -1
matrix.preScale(-0.999f, 1.0f);//don't ask don't tell
originalUserPhoto = Bitmap.createBitmap(originalUserPhoto, 0, 0,
originalUserPhoto.getWidth(), originalUserPhoto.getHeight(),
matrix, true);
如果我就地修改了originalUserPhoto(请注意,我将其作为createBitmap的源传递进来),那会不会泄漏原始数据?还是JVM足够聪明以释放那里的数据?
解决方法:
是的,没有.您有两个Bitmap对象(第一个是由cryptoByteArray创建的,第二个是由createBitmap创建的),而第一个没有任何引用它的对象,因此在将来的垃圾回收周期中,它很可能会被删除.
就是说,虽然在回收位图时也会删除位图的本机后备存储,但我建议您在使用完后手动删除第一个位图-将其保留在单独的引用中并在其上调用recycle() .位图可能非常昂贵.
顺便说一句,如果createBitmap的要点只是按比例缩放,那么我会考虑通过传递选项对原始位图进行解码时将其按比例缩小.您将无法缩放到所需的大小,但是至少您最终不会得到一个庞大的位图,并且只能缩小到其大小的十分之一.这样会更快,并避免内存高峰.
内容总结
以上是互联网集市为您收集整理的java-复制位图到位会泄漏内存吗?全部内容,希望文章能够帮你解决java-复制位图到位会泄漏内存吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。