【问题标题】:Android Cipher AES encryption memory leakAndroid Cipher AES 加密内存泄漏
【发布时间】:2015-06-29 08:15:19
【问题描述】:

美好的一天。我在我的应用程序中使用类 javax.crypto.Cipher 使用 CBC 模式 AES 加密。 在加密任何下一部分数据之前使用 CBC,我们应该调用 cipher.init() 方法。我注意到这会导致内存不断增长。在某些设备上,它是“未知”类型的内存,在其他设备上是“本机堆”。问题是内存在加密大文件时会增长,并且在完成后不会释放。我已经检查过是否在加密数据内存的任何部分之前不调用 cipher.init() 不会增长。所有对象在加密后都被销毁。没有指向未使用对象的链接,尤其是在使用密码的情况下。当加密 1,5Gb 的视频大小时,应用程序正在使用的内存大小将约为 500Mb,如果再加密一个 1,5 Gb 视频,它将变为 1 Gb,系统会杀死应用程序。 使用方法cipher.update()进行加密,方法ciper.doFinal()导致同样的情况

不胜感激

【问题讨论】:

  • 最好提供android版本、设备信息等。我使用了几种加密技术,它似乎不会产生内存泄漏。它也是您拥有的代码,您可以分享的任何内容都会有所帮助。
  • 我使用 Nexus 7 和 android 5.0.2。
  • 抱歉,我无法共享代码。但是可以看出结构是 for() 循环,在其中我为每个数据部分调用 cipher.init() 和 cipher.update() 方法。请告诉您,您是否在 Android 上使用 AES 和 CBC?它工作正常吗?
  • 你的评论是真的。我已经检查了带有 android 4.0 的设备,4,4 没有这样的问题。在带有 android 5.1.1 的 nexus 4 上,它也不存在。它仅在带有 android 5.0.3 的三星 SG4 和带有 5.0.2 的 Nexus 7 上重现。谢谢

标签: android encryption memory-leaks out-of-memory


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 2013-10-16
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
  • 2014-08-05
  • 2015-07-20
相关资源
最近更新 更多