在python中为这个问题寻找一个经过验证的解决方案。
我有这样的代码:
verySensitveData = "secret, big secret"
#useing verySensitveData in code
#not need it any more
del verySensitveData # now variable is unusable in later code
collected = gc.collect() #collected and removed现在,当gc被调用时,它应该从RAM中消失。
这是否迫使操作系统用GC自动删除verySensitveData变量使用的地址上的数据?
它应该会永远消失,没有ram内存转储能够检索变量verySensitveData中的数据?
发布于 2016-01-30 02:28:07
不是的。gc.collect()只会导致Python检查引用但不可访问的对象(例如,两个对象相互引用,但其他任何对象都不引用)。它不会触发任何类型的内存清理。
如果让您的程序抵抗内存转储很重要,那么Python并不是编写它的合适语言。Python很少保证数据将如何存储在内存中,而且很可能您处理的任何字符串在处理过程中都会被复制到内存中,这可能会在内存中留下字符串的部分或完整副本。Python可能会重用该内存或稍后将其发布到操作系统,但它不会采取任何特殊措施来清除它。
https://stackoverflow.com/questions/35097176
复制相似问题