java - JVM可以在关闭时覆盖其所有内存吗

标签 java encryption jvm

我正在开发一些处理内存中的 secret 数据的应用程序。有没有办法确保在 JVM 终止时覆盖所有内存? JVM 终止后,不应在内存中保留任何 secret 数据。

最佳答案

简短回答:当前一代 JVM 无法保证这一点。

但是,如果您的应用程序需要这种东西,则很难看出如何用任何编程语言在典型的现代操作系统上实现它,除非您运行交换设备。即使那样,您也可能需要依靠操作系统在程序退出时将物理内存归零。 (除非存在错误,否则操作系统应该在将内存提供给另一个进程之前将其归零,但我认为在发生这种情况时并未指定。)

但这没有实际意义。操作系统应该防止未经授权的人/进程在程序执行期间或程序退出后看到其他进程的内存。如果您的系统被黑客入侵以获得“root”权限或同等权限,您不能保证其中之一。所以当程序退出时,已经太迟了!

关于java - JVM可以在关闭时覆盖其所有内存吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42993408/

相关文章:

java - 尝试从正则表达式中的各个组获取数据失败

java - 从 API 提要解析 XML (Java)

java - AES-CTR双重加密将密文反转为明文

java - 获取 Java VM 引用,从 C++ 和并发创建 Java 对象

java - 在java中创建弱引用静态变量

java - 如何在 Java 中使用加色混合来制作重叠的绘制形状?

java - CAS 默认票证注册表和内存缓存票证注册表行为有什么区别?

encryption - ANT+ 单 channel 加密示例

encryption - 解密 .m3u8 播放列表并使用 ffmpeg 将其合并为单个 .mp4 文件

java - Java内存模型中堆的实现