美好的一天。我在我的应用程序中使用类javax.crypto.Cipher使用CBC模式AES加密。 在使用CBC加密任何下一部分数据之前,我们应该调用cipher.init()方法。而且我注意到这会导致内存不断增长。在某些设备上它是"未知"其他设备上的内存类型是#34;本地堆"。问题是内存在加密大文件时会增长,并且在完成后不会释放。我已经检查过,如果我在加密之前没有调用cipher.init(),那么数据内存的任何部分都不会增长。加密后所有对象都会被破坏。没有指向未使用对象的链接,尤其是在使用密码的情况下。当加密应用程序使用的1,5Gb结果内存大小的视频大小约为500Mb时,如果加密一个1.5 Gb视频则变为1 Gb并且系统杀死app。 使用方法cipher.update()进行加密,方法ciper.doFinal()导致相同的情况
非常感谢任何帮助
答案 0 :(得分:0)
Android 5.0.x似乎本身就是问题。已报告memory leak problem。请查看这些链接以获取更多信息:
http://www.xda-developers.com/lollipop-memory-leak-fixed/
http://www.androidauthority.com/fix-lollipops-massive-memory-leak-coming-soon-ish-577101/